diff --git a/content/blog/2024/hackbots-part-2/index.md b/content/blog/2024/hackbots-part-2/index.md index 4239250..8c028f7 100644 --- a/content/blog/2024/hackbots-part-2/index.md +++ b/content/blog/2024/hackbots-part-2/index.md @@ -13,17 +13,16 @@ listing_image: hackbot.jpg --- # Continuing the Bot Building Process -So we'll continue from where we left on last a little while ago with our bot building blog [posts][1]. -We'd got to the MK IV if memory serves... next on the list of things to do is to make our bot interface page nice and pretty. +So, we'll continue from where we left on last a little while ago with our bot building blog [posts][1]. +We'd got to the MK IV if memory serves... Next on the list of things to do is to make our bot interface page nice and pretty. ## Enter, CSS -Because we're using a very simple webserver on the [Raspberyy Pi Pico W][2] and because the code handily returned from our `generateHTML()` function is effectively the page that's served by the websever; we know this is a pretty good place to add a little customisation for our robot - make our page a little ... prettier :). +Because we're using a very simple webserver on the [Raspberyy Pi Pico W][2] and because the code handily returned from our `generateHTML()` function is effectively the page that's served by the websever; we know this is a pretty good place to add a little customisation for our robot - make our page a little... _prettier_. ## CodePen -when prototyping it's always much more satisfying to see the changes happen quickly as opposed to editing our `generateHTML()` function, uploading to the bot, connecting to our bot, visiting the url... it's a lot of steps - to to make this a bit easier we're going to use a nice tool called [CodePen][3], our first step is to rip out the HTML from the `generateHTML()` function and paste it into the HTML window like so: - - -We've made a couple of modifications from our original `generateHTML()` function to make it easier to work with CSS: +When prototyping, it's always much more satisfying to see the changes happen quickly as opposed to editing our `generateHTML()` function, uploading to the bot, connecting to our bot, visiting the url... it's a lot of steps - so, to make this a bit easier we're going to use a nice tool called [CodePen][3], our first step is to rip out the HTML from the `generateHTML()` function and paste it into the HTML window like so: + +The result of the code is shown underneath the HTML and CSS editor windows, We've made a couple of modifications from our original `generateHTML()` function to make it easier to work with CSS: ```python html = f""" @@ -33,15 +32,15 @@ html = f""" return html ``` -The above code is snipped for brevity but what it does is uses python's format string fucntionality to add the variable `style` with the the style we read into the variable (more on that a little later). +The above code is snipped for brevity, but what it does is uses python's [_string format_][5] functionality to add the variable `style` with the the style we read into the variable (more on that a little later). -We've also moved `generateHTML()` into it's own file and use parameters to drop in from the main program, we import the function into `main.py` by adding the following code to the top of our `main.py`: +We've also moved `generateHTML()` into its own file (`html.py`)and used parameters to drop in from the main program, we import the function into `main.py` by adding the following code to the top of our `main.py`: ```python from html import generateHTML ``` -This allows us to call `generateHTML()` like we did previously, it's just tidied away in its own file now :)... We've also added the following code to the beginning of the function - which will allow us to use an _exteral_ style sheet (see I told you more on that later): +This allows us to call `generateHTML()` like we did previously, it's just tidied away in its own file now... We've also added the following code to the beginning of the function - which will allow us to use an _exteral_ style sheet (see I told you more on that later): ```python style = "" with open("./style.css","r") as f: @@ -50,12 +49,12 @@ with open("./style.css","r") as f: Now, once we're done with making the code look _pretty_ in CodePen we can just drop the code from the _CSS_ window into the `style.css` file and it will make the controller page all nice and pretty too! Great Stuff! ## Paletton -A good place to grab some colours that go well together is [Paletton][3], For the purposes of this guide however we're only going to pick a primary colour but don't let that stop you from adding a little extra flare, pick a colour you like the look of like so: +A good place to grab some colours that go well together is [Paletton][3], For the purposes of this guide however we're only going to pick a primary colour but don't let that stop you from adding a little extra _flare_, pick a colour you like the look of like so:  -Then, go to the export and select _as CSS_: +Then, once you're happy with your colourcscheme - go to the export and select _as CSS_:  -Don't worry if the export doesn't work as all the relevant colour information (Hex values) can be grabbed right off this page too! +Don't worry if the export doesn't work, as all the relevant colour information (Hex values) can be grabbed right off this page too! You should end up with something like this in your `style.css` file: ```css :root{ @@ -75,14 +74,114 @@ button { font-size:25pt } ``` +Where the `:root` _selector_ contains the variable namnes used for the colours - you don't have to do it exactly like this but it's done here for clarity. -Where the `:root` _selector_ contains the variable namnes used for the colours - you don't have to do it exactly like this but it's done here for clarity +## The generateHTML() function +Once you're finished, you should end up with something like this in your `generateHTML()` function: + +``` +def generateHTML(): + style = "" + + with open("./style.css","r") as f: + style = f.read() + + html = f""" + +
+| SSID | +PASSWORD | +IP | +
| {ssid} | +{password} | +{ap.ifconfig()} | +