What did you build today (Pictures) ?
-
Suddenly my outdoor lightsensor stopped working. A good time to have a portal debugger. Everything seems fine in the log though... All ST:ok but for some reason it doesn't show up in domotocz.... Well that have to be tomorrows project.
-
Another node went down today... a repeater this time. Well... quickly a new one with additinal updates compared to old. (PA/Lna and Mysensors 2.3)
-
I made a working version of my test board with PCF85176 LCD driver, finally reaching some decently low current consumption for an always on display. There are still some possible gains to make with lower driver voltage, and with a more recent driver that should allow to go as low as 5uA.
-
Though not MySensors related, I thought I'd post my latest build that has been consuming a lot of my time lately. This is the main reason I haven't been on the forum much lately. I bought a drone kit recently. Here are some pics from the initial assembly:
Since the initial build I have flown it and from a hard landing broken one of the cheap plastic legs that it came with. I designed a replacement with my 3D printer and some 1/4 inch aluminum rod.
Here are some pics at it's current stage. I have designed and printed some prop guards and a few other add-ons:
I have also designed and built a small servo based 3 axis camera gimbal. The controller was built using one of my spare 5 volt pro minis and an MPU-6050 accelerometer. Still working on the parts that will attach it to the drone, and I still need to pick up an FPV camera to attach to it, but a simple FPV cam is cheap.
-
@sundberg84
Thank you Sundberg for your help, I now have received my own microscope, a reply to your comments from 1 or 2 months ago
-
@andrew have you also designed the power board or do you reuse the livolo's one?
-
@jeremushka I reused the top PCB (the touch panel) with its original microcontroller, but with a custom firmware. the bottom PCB was fully replaced with my own designed version. this includes the power supply with additional protections, atmega328, atsha and nrf radio.
it is running very well on my desk, but I was super busy in the past months so it is not yet installed to the wall.in parallel I also had to finish its opposite side, the controller at the lamp. it is also ready for final installation, I just need time for that
-
The other day I finished the first version of the PCB for my system of protection against water leakage. It will have two automatic ball valves, six leakage sensors with wire breakage monitoring and in the future I plan to connect it to the Mysensors.
Here is a prototype collected with the help of Arduino Pro Mini. Arduino Uno is just nearby, but not connected. Do not pay any attention to him.
-
@vladimir I gather you meant motorised ball valves rather than automatic, the automation being on the processor.
When you refer to leakage, is this to react to pipes potentially bursting or an external failure such as drainage failure in a cellar?
-
@zboblamont Yes, it is, motorized ball valves.
I meant the reaction to the breakthrough of pipes or flexible connections of sanitary ware.
-
@vladimir Ok understood, washing machine hose failure or plumbing seals etc..
Had also considered incorporating leak detection after twice flooding out my bathroom (water softener cycle discharged externally normally - doesn't work so well at -20), ultimately solved by some overflow plumbing to internal drainage.Still considering leak detection as a failsafe, but was looking at monitoring internal and external pressure and flow as well as conductivity at three separate areas. The idea was to similarly initiate shutdown of a motorised valve (for the entire house), or close down the supply pump for an external burst, so a little more complicated, but hence the curiosity.
For surface water detection I was looking at either fixed stainless stud contacts on the tiled floors, or mounting 3 on a plate like a tripod, as it should be more resistant to corrosion than standard rain sensor plates.
-
@zboblamont
water leak/flooding detection,
I propose to get some stainless conductive wire, like this: https://www.adafruit.com/product/603
and then add 2 parallel wires on tape, and tape this to the floor, besides the dishwasher
-
@bjacobse Interesting concept, and product, not so sure about the tape idea over a mechanical fix, the tape's behaviour in a wet or moist environment could prove unpredictable.
Tie/clamp this to a stud, or to a stainless rod projected to floor level might solve the corrosion issue with copper wire though....
-
@zboblamont @bjacobse
I plan to make the leakage sensors waterproof, with outwardly exposed contacts made of stainless steel. I plan to lift the contacts 1-2mm from the floor so that when washing floors, when the floor is just a little wet sensor did not work. I really like the sensors from Xiaomi.
I ordered for the sample here are such cases from China:1 - 31х10mm
2 - 61х20mm
-
The project of today is not yet connected with Mysensors.
This is a light relay with an IR receiver for the spotlight illuminating the backyard of my friends' house.
In the dark, the relay can be switched off from the remote control (to block the activation of the relay). If the remote is far away from you, then the lock can be removed with the searchlight switch by restarting it.
To understand if the relay is locked, there is a red LED on the case.
-
Anyone spots the differens? One booster draws 21mA sleeping and the other 13uA.
(I don't).
-
@sundberg84 Easy, one is disconnected... At 90 degrees?
-
@sundberg84 Different SMD capacitors?
-
@sundberg84 Which booster is this anyway it looks better made than many I've seen available ?
-
@zboblamont its the one from mysensors store. I bought 10 and 8 of them is working.
-
Finally I finished my chicken coop door opening thingie A build that has taken way to much time to complete, and a few different directions.
Just as I was ready to install the thing, I discovered that the DC motor that I had bought for this, couldn't lift the gate. So I had to go scrap hunting, to find a larger motor for it.. Luckily I had a 24V motor from a broken garageport opener which chould be used at 12V.
Control box above the door, includes a PIR sensor in the lid.
the gate, a sheet of 3mm black acrylic "glass". I had a couple of reed relays in the parts bin, so I use those to detect positions of the gate.
The motor on is placed on the inside of the wall.
Field update of the firmware.. Should probably reflash the bootloader, to mysboot, so I can do it OTA..
-
-
@tbowmo smooth!
That should keep the foxes out
-
@tbowmo Looks good
-
"funny" thing, that you first find all bugs after a more advanced node is deployed.. But after a couple of days debugging, with frequent firmware updates (opening the box, plugging in cables, and sitting with a laptop between all the chickens). I think that it is done now..
Firmware is here (if anyone is curios) https://github.com/tbowmo/chickenCoopFirmware
-
Hi all!
Today I eventually built my first MySensors device - Serial Gateway.
Now I'm testing it with OpenHab and working on first node - battery powered scene controller.
-
@tbowmo I've also been using MQTT and NodeRed as the routing solution for my home automation. I found that there was no default handling of ID_REQUEST messages which made configuring new nodes a manual process but eventually added that to my flows and now new nodes don't have to be configured at the Arduino end.
It would be nice to see more about your setup, more specifically about the dependencies in nodered-mysensors-flow/package.json on your github.
-
Have you seen this thread: https://forum.mysensors.org/topic/9296/node-red-contrib-mysensors-release-thread ?
Basically these set of nodes includes a controller node, that handles mysensors ID assignments, and a couple of other basic controller features.
-
@tbowmo I had seen that thread. After importing your https://github.com/tbowmo/nodered-mysensors-flow, I think this is probably quite different from my approach, I've kept it all as flows without writing any new node types or adding dependencies beyond what is installed in Raspbian by default. At some point I'll get around to documenting and posting what I've done in NodeRed too, it's a pretty simple but surprisingly powerful tool.
-
My Node Red controller is closer to what FotoFieber did a couple years back but it's for 2.3.0 and MQTT. His project is at https://forum.mysensors.org/topic/700/node-red-as-controller/28 as well as various updates over time. It was good to see @FotoFieber's code as it showed me a few holes in what I've done so far.
-
Well, node-red is powerful and you can do things without creating any new node-red nodes, but it makes life a lot easier (for me) when you can just pick an item from the palette, and hey-presto you have decoded the (serial/mqtt) mysensors message. Or pick another one, and you have a controller added, that can respond to ID requests.
Btw. the the github repository that you link to, was a bit outdated.. A lot of things have happened since I pushed last time.. (just pushed current node-red flow for reference)
-
So I finally finished my motion sensor project and it works
It will be published on OpenHardware.io soon
-
And also finished my toolkit library for MySensors for faster code developement (https://github.com/mczerski/MySensorsToolkit). Example projects (https://github.com/mczerski/MyMultiSensor).
-
@rozpruwacz nice & small motion sensor, good work!
Where did you get the swivel to mount it to the wall?
-
@Yveaux I get it from the polish suplier (https://hurtowniaimport.pl/291-bb1-uchwyt-magnetyczny-samochodowy-do-telefonu-gps.html) but if you google for "magnetic phone holder 360" You wil get similar mounts.
-
-
Today I soldered the Velleman EDU09 oscilloscope kit. The kit is quite cheap (~50 EUR in local store). The specs aren't impressive (max 200kHz and min 100mV/division) but hopefully it can help me learn how to use a scope before I buy a real one.
-
Not at all mysensors related, but I have been busy building a bartop mame cabinet the last week or so.. Still mis a couple of details, but it is in a "playable" state right now.
The setup is using an old 19" lcd monitor that I had in surplus with a RPI-3B on the back, a couple of cheap Chinese arcade controllers, a partly homebuild audio hat for the rpi (adafruit i2s 3W amplifiers), and a switchmode capable of 5V @8A (if I remember right), and 12V @3A. So I have power for the marque lighting as well..
Only game available right now is Bubble Bobble, and the kids loves it (as seen in the video linked to below).
Retro arcade first game – 00:29
— Thomas Bowman Mørch
-
@tbowmo
Quite impressive arcade game
-
For this project box that I'm making (actually printing it as I type this), I found an easy way to add ventilation: use a hex infill and turn off the upper and bottom layers.
As you can see, it can still have standoffs for screwing down a PCB and for securing a lid.
-
Here's the finished unit:
What it does is completely eliminate the audible PWM noise from the fan on the Prusa I3 MK3. Now it can run practically silent.
-
@mfalkvidd Just a tip. You may be better of buying this one:
Much better spec and the price is the same. AND you can save tons of time as it does not require soldering.
-
@tbowmo Now I want to build one :-)))
-
@alexsh1 thanks for the tip. I guess I'll have a hard time getting my money and time back now that the kit is soldered, but it might be interesting for someone else.
-
I used this as a base for my own build: https://www.instructables.com/id/2-Player-Bartop-Arcade-Machine-Powered-by-Pi/
-
LED backlight for my CNC machine....
-
Today I've been trying to get a MS5803_05BA sensor working. This is a pressure sensor that is commonly used in dive computers.
The sensor is tiny and handles 0-5 bar. So far I've not been able to communicate with it though. I use i2c and have tried two libraries, but none of them work (or maybe I killed the sensor when I soldered the cable).
-
At first I had a 25m cable. Turns out i2c isn't designed for that. It is designed for ~1m at 100kHz and ~10m at 10kHz. ESP8266 defaults to 400kHz and can't go lower than 50kHz without modifying the ESP8266 core files.
I got my first use case for the oscilloscope I built.
This was the signal at the start of the cable:
This was the signal at the end of the cable:
So no surprise that the communication didn't work.
I tried with a 2k pullup:
Much better! But still not very good.
I modified the library to use 7.5kHz:
Better again, but still not great. I lowered the speed to 0.75kHz:
Nice and clean!
But communication still didn't work so I decided to cut the cable (to the 10cm length seen above) and restore all my changes. But communication still doesn't work.
I bought the sensor from a reputable distributor in UK so I don't think I got a faulty sensor. But I don't seem to get any life signs at all from it. I tried an i2c scan sketch and it found nothing.
-
@mfalkvidd shot in the dark ; do you pull the PS pin high to select i2c protocol?
-
@yveaux yes I do. I took the easy way: soldered the 3.3V wire to pads 5 and 6 at the same time.
And I have tried putting a 104 ceramic capacitor between 3V3 and GND right next to the sensor.
CSB is connected to GND.My next step is either to see if I can get SPI working (instead of i2c), or order a new sensor. But first sleep.
-
BT832 Thin Node prototype. Inspired by https://forum.mysensors.org/topic/2067/my-slim-2aa-battery-node and @neverdie nrf5 and am612 research. I noticed the BT832 is about the same width as a AA battery holder. I'm using one AA LiFePo4. This is my first sensor with nrf5, bme280, and am612. I also incorporated a jst-sh 6 pin connector for programming. It includes swd, power, and text. All sensors are working. It did not turn out to be very thin. Need to try some smaller PIR lenses and rearrange components for the next iteration.
-
Nice work! If you want to go thinner, you may have to use a coincell. Looks nice the way it is though.
-
I have assembled a few UPS ... now I am testing these hardware.
-
@kalina
Nice packaging. I'll be interested to hear how well they work.
-
@nagelc
OK, I will keep you informed of developments on this project ...
-
@kalina said in What did you build today (Pictures) ?:
I have assembled a few UPS ... now I am testing these hardware.
Looks neat! How did you do the cutout of the sides of these enclosures?
-
@tsjoender said in What did you build today (Pictures) ?:
Looks neat! How did you do the cutout of the sides of these enclosures?
No magic, this is the work of the CNC...)))
-
Today I had the ladder so I could get on the roof so while there I changed batteries on my rain node.
-
@sundberg84 But what did you build today?
-
@yveaux nothing that I can post here unfortunately... only a ladder for my cat non automated.
-
It's a breakout for a Fanstel BT832 (NRF52832). Two experiments with this board, still a work in progress:
-
I wondered if it would be possible to hand solder to the LGA pads on the back of the BT832 using small plated thru holes (6 solder spots middle left in the first picture). Two pads connected. The rest did not. About what I expected.
-
Using just the microprocessor of the BT832 to make a LoRa node. (NRF5 radio turned off). So far the Ra-01 is not initializing. Edit (10/8). The RA-01 now initializes. I needed to update the pin assignments in MyBoardNRF5.h.
-
-
@sundberg84 said in What did you build today (Pictures) ?:
@yveaux nothing that I can post here unfortunately... only a ladder for my cat non automated.
Just pretend you have automated your cat. We can't control from here.
-
Colleagues!
I am writing in this thread, because here are the most active users of the forum and the system MySensors.
Perhaps you can help me with the solution of my problem: Improvement Xiaomi smart kettle (I need help!)
Maybe you had similar projects...
Then, I can finally publish a new project in this thread.
-
@vladimir please don't crosspost. Everybody is able to see the latest messages, so there is no need to point to your post from multiple threads.
-
@yveaux Excuse me. I promise not to do it again!
-
@Nca78 Well, i automated my cat door.
-
@sundberg84 said in What did you build today (Pictures) ?:
The rules are simple - keep it simple with one picture (or a few) with a small text including a small exp
sick of breadboard so made the gateway more permanent. added a nice dc plug to it after pic
-
Playing with how small I could create a EasyPCB if I only used SMD components and footprints for both RFM69 and Nrf24l01+... including MysX, Signing, Flash offcourse... and a coincell...
-
cool, what dimensions are you down to now?
btw. what happened to the trace in lower right corner (the one that runs by the ISP connector)?
-
@tbowmo - Thanks!! 42mm diameter (round, but the 3d view doesnt show that).
The track - well, it seems like I can only get KiCad to make 45dgr tracks... need to investigate it its possible to make other tracks...
-
@sundberg84 you can also use smd crystal. They are cheaply available on aliexpress. Are you using 0603 caps and resistors?
-
@monte - 0805 res/caps, (for me easy to solder, while 0603 is possible but start to get hard).
I was thinking about SMD crystal but left it since i couldnt find a common size. Do you know a good size for SMD crystal (with multiple brands?) like 0805 or a good searchword? I found HC-49S but they are the same size as the ones with pins.
-
@sundberg84 "well, it seems like I can only get KiCad to make 45dgr tracks"
References => General Settings => Limit graphics lines to 45 degrees
-
I recently hacked my Assa Abloy/Yale smart lock as it could only turn +-90° created a new washer ring, so it now can turn infinitely so it is usable to use a lock
The needed 3D stl file or Freecad drawing is to be found here:
https://www.thingiverse.com/thing:3155286
-
What an inspiring thread!
-
@sundberg84 I've bought these 5032 crystals: https://www.aliexpress.com/item/Free-shipping-20pcs-16-000MHZ-16mhz-20pF-2Pin-5032-smd-quartz-resonator-Crystal/32821974003.html but there are plentiful other offers on aliexspress and/or ebay. This 5032 package seems to be the most common. There is another package with the same size but with 4 pins 2 of which are not connected, I bought them from my local distributor, while was waiting a package from aliexpress. But those with 4 pins are harder to solder (obviously) and I don't see any pros of using them.
The most suitable for hand soldering and easiest to find are these:
According to this image the ones I have are TX5 and TG5.
-
Im getting so tired of soldering extra wires and stuff so today im doing a "MysX to All common sensors breakout board"...
Dont know if this will work... but worth a shot.
-
@sundberg84 If I'm honest some of those sensors seem 'old' to me.
- I usually go for the BEM280 instead of the BMP085 and DHT22. It's so cheap now.
- I never use pulse soil sensors, only the capacitive kind, as they last much longer and don't pollute the soil.
In fact, I always make all my sensors with the Nano Wireless Expansion Board, which is about $2. You can simply plug in the NRF24 into it.
https://www.aliexpress.com/item/Free-shipping-Nano-328P-IO-wireless-sensor-expansion-board-for-XBEE-and-NRF24L01-Socket-for-arduino/32264665470.html
-
@alowhum thanks for the reply!
I used the sensor in MySensors build section, i somehow believe that is whats used the most. But that does not stop me from adding your suggestion for BEM280. That Wireless board looks great, but Im working with the MysX connector so thats why im making this board.
-
@alowhum said in What did you build today (Pictures) ?:
- I usually go for the BEM280 instead of the BMP085 and DHT22. It's so cheap now.
Unfortunately most of the cheap breakout boards found on AliExpress use clones with much worse specs than the original version
In fact, I always make all my sensors with the Nano Wireless Expansion Board, which is about $2. You can simply plug in the NRF24 into it.
https://www.aliexpress.com/item/Free-shipping-Nano-328P-IO-wireless-sensor-expansion-board-for-XBEE-and-NRF24L01-Socket-for-arduino/32264665470.htmlBut you can't really make battery-powered sensors with those ? The regulators are AMS1117 with 5mA typical quiescent current.
-
@nca78 said in What did you build today (Pictures) ?:
Unfortunately most of the cheap breakout boards found on AliExpress use clones with much worse specs than the original version
Could you be more specific? How exactly worth specs does they have. Was going to buy a bunch of them. Maybe there is some comparison or tests?
-
@sundberg84 yes, sorry about that, I realised too late that it's an expansion board.
@Nca78 Thanks! That 5ma leak current was exactly the kind of info I needed about the board. I was wondering it if could be useful for battery powered things. None of my sensors are. Well, one - I used the BBC Micro:bit as a battery powered motion sensor.
I guess not having a regulator on board is what makes the Arduino Pro Micro so good at being battery powered.
Out of curiosity: if I attached the board to a Usb powerbank (say 10.000 Mah) to operate as an electricity led pulse sensor.. what would be an estimate for how long it would run?
-
@alowhum rough calculation: 10,000/5 = 2,000h = 83 days. Lower if other componens also consume power.
-
@monte clones use different components, so it depends on which clone.
-
@alowhum said in What did you build today (Pictures) ?:
I guess not having a regulator on board is what makes the Arduino Pro Micro so good at being battery powered.
actually the better solution is the pro mini at 3.3v with regulator and led removed, and you can use an LDO regulator to power it with a LiPo cell or no regulator at all if you use a LiFePO4 battery. Using the arduino at 3.3v allows you to use all radio modules and all the low power sensors.
-
This is my new PSU - 3D printed enclosure and a few components
It is very precise.
-
@alexsh1 nice! Why do you have 4 banana sockets and what's the color coding?
-
@alexsh1 Looks awesome
-
Something nice about those power supplies is that for very little extra money (maybe $1-3 extra) you can buy versions with UART and/or even bluetooth data output that you can send to a logger. I'd have to check, but it might even be controllable that way also.
-
Yes, in fact I bought the DPS5015 with its metal box and BT/USB interface and I can control it from the computer. Data logging of course is limited to the values on the screen
-
@yveaux This is simple. The Aliexpress seller sent me these instead of black and red ones. So I have been creative - black and blue is negative and yellow and green is positive. Did not bothered waiting for a few weeks for replacement.
-
@neverdie It is purely for logging and control. I did not require either so did not order it. If you add all extras, it does become considerably more expensive.
-
@alexsh1 very nice! Is the 3d-drawing online to be downloaded? I think I want one as well.
-
Saw that all other kids cool kids have one, so I installed one kitchen-pc as well.
It is Flytech K757 15'' POS terminal, windows 10 pro, touch screen, 300gb (soon to be ssd) 8gb ram dual core 2,2ghz. Purchased from local "ebay" for around 140 eur.Now I can make that awesome dinner, once in a full moon, without having to carry and unlock my phone all the time...
-
esp8266 based thermostat for heating system
-
bridge from single wire (my w3p manchester based) to UART. will be used to bridge single wire network with Ethernet throuth ESP8266 or STM32 + Wiznet
second photo - development stand with w3p bus
-
Yes, you can downloads STLs from here: https://www.thingiverse.com/thing:2250644
There another one https://www.thingiverse.com/thing:1816188
-
Build myself a simple temperature sensor with a clock. No RTC, just pulling time from controller and updating every 10 minutes to avoid drift. Also requesting outdoor temperature from controller. Build from what was lying around - DHT22, pro mini clone, nokia screen. I can share the code if someone needs it
-
@monte if you can share, pls do so
-
Ask questions if something is left unclear.
#define DHT_PIN 4 #define CE_DISPLAY 5 #define RST_DISPLAY A2 #define DC_DISPLAY A3 #define DIN_DISPLAY 7 #define CLK_DISPLAY 8 #define SN "Clock + Temperature" #define SV "1.0" #define DHT_TYPE DHT22 #define MY_RADIO_NRF24 #define MY_TRANSPORT_WAIT_READY_MS 10000 #include <MySensors.h> #include <U8g2lib.h> #include <DHT.h> #include <time.h> volatile unsigned long rawTime; unsigned long timer1 = 0; unsigned long getTimeDelay = 600000; unsigned long timer2 = 0; int getDHTDelay = 3000; unsigned long timer3 = 0; unsigned int sendDelay = 60000; float h, t; char outdoorTemp[50]; float lastT; U8G2_PCD8544_84X48_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ CLK_DISPLAY, /* data=*/ DIN_DISPLAY, /* cs=*/ CE_DISPLAY, /* dc=*/ DC_DISPLAY, /* reset=*/ RST_DISPLAY); // Nokia 5110 Display DHT dht(DHT_PIN, DHT_TYPE); MyMessage tempMsg(0, V_TEMP); volatile struct tm * localTime; void before() { u8g2.begin(); Serial.begin(115200); u8g2.firstPage(); do { initScreen(); } while ( u8g2.nextPage() ); dht.begin(); delay(2000); } void setup() { setupTime(); timer1 = millis(); t = dht.readTemperature(); h = dht.readHumidity(); timer2 = millis(); send(tempMsg.set(t, 0)); lastT = t; timer3 = millis(); } void presentation() { present(0, S_TEMP); present(1, S_INFO); //Info sensor to request outdoor tempereture sendSketchInfo(SN, SV); request(1, V_TEXT); } void setupTime() //setting up timer and interrupt for seconds counter { cli(); //set timer1 interrupt at 1Hz TCCR1A = 0;// set entire TCCR1A register to 0 TCCR1B = 0;// same for TCCR1B TCNT1 = 0;//initialize counter value to 0 // set compare match register for 1hz increments OCR1A = 15624;// = (16*10^6) / (1*1024) - 1 (must be <65536) // turn on CTC mode TCCR1B |= (1 << WGM12); // Set CS10 and CS12 bits for 1024 prescaler TCCR1B |= (1 << CS12) | (1 << CS10); // enable timer compare interrupt TIMSK1 |= (1 << OCIE1A); sei(); requestTime(); } ISR(TIMER1_COMPA_vect) { rawTime++; //increment seconds counter } void float2string(float n, char* output) { char aChar[5]; char bChar[4]; if (n > 0.0) { strcpy(aChar, "+"); } else if (n < 0.0) { strcpy(aChar, "-"); } dtostrf(n, 4, 1, bChar); sprintf(output, "%s%s", aChar, bChar); } void initScreen() //function to show message on screen during node start { u8g2.setFont(u8g2_font_profont12_tr); u8g2.drawStr(42 - (u8g2.getStrWidth("Connecting to") / 2), 13, "Connecting to"); u8g2.drawStr(42 - (u8g2.getStrWidth("a MySensors") / 2), 26, "a MySensors"); u8g2.drawStr(42 - (u8g2.getStrWidth("network.") / 2), 39, "network"); } void mainScreen() { u8g2.setDrawColor(1); u8g2.setFontMode(1); u8g2.drawBox(0, 0, 84, 8); u8g2.setDrawColor(0); u8g2.setFont(u8g2_font_profont10_tf); localTime = localtime(&rawTime); //using standart AVR time.h library to convert seconds counter into local time char date[30]; strftime(date, 30, "%d.%m.%y %R", localTime); //constructing a string with date and time u8g2.drawStr(42 - (u8g2.getStrWidth(date) / 2), 7, date); u8g2.setDrawColor(1); u8g2.setFont(u8g2_font_maniac_tr); char val[5]; float2string(t, val); //converting float value from dht11 to a string u8g2.drawStr(42 - (u8g2.getStrWidth(val) / 2), 36, val); u8g2.setFont(u8g2_font_profont10_tf); u8g2.drawStr(5, 47, outdoorTemp); itoa((int)h, val, 10); //I don't need precision for humidity procentage, otherwise you can use dtostrf() u8g2.drawStr(70 - u8g2.getStrWidth(val), 47, val); u8g2.setFont(u8g2_font_open_iconic_thing_1x_t); u8g2.drawStr(71, 47, "\x48"); } boolean isTime(unsigned long *timeMark, unsigned long timeInterval) //time counter function for non-blocking delays { if (millis() - *timeMark >= timeInterval) { *timeMark = millis(); return true; } return false; } void loop() { if (isTime(&timer1, getTimeDelay)) { //request time from controller once in 10 minutes requestTime(); } if (isTime(&timer2, getDHTDelay)) { //polling DHT sensor and printing values to serial t = dht.readTemperature(); h = dht.readHumidity(); Serial.print("Temperature: "); Serial.print(t); Serial.println("°"); Serial.print("Humidity: "); Serial.print(h); Serial.println("%"); } if (isTime(&timer3, sendDelay)) { //sending temperature to controller once in 30 seconds if (t != lastT) { send(tempMsg.set(t, 0)); request(1, V_TEXT); lastT = t; } } u8g2.firstPage(); //this section is for screen handling do { mainScreen(); } while ( u8g2.nextPage() ); } void receive(const MyMessage &message) //receiving an outdoor reading from the controller and constructing a string to display { if (message.type == V_TEXT) { sprintf(outdoorTemp, "%sC%s", message.getString(), "\xb0"); } } void receiveTime(uint32_t ts) { rawTime = ts - UNIX_OFFSET; //substructing an offset from received timestamp, since time.h doesn't use Unix count localTime = localtime(&rawTime); //updating seconds timer with accurate value timer1 = millis(); }