Δύο πλακέτες, δύο πρωτόκολλα, ίδιος αισθητήρας (STTS22H). MQTT μέσω HiveMQ ή mosquitto στο VPS, Zenoh μέσω zenohd στο VPS. Όλες οι μετρήσεις αποθηκεύονται σε SQLite στο VPS.
| Ώρα | Πρωτόκολλο | seq | °C |
|---|
Το σύστημα: δύο πλακέτες STWIN.box (STM32U585) με αισθητήρα θερμοκρασίας STTS22H, η μία μιλάει MQTT (mosquitto στο VPS) και η άλλη Zenoh (zenohd στο VPS), μέσω Teltonika RUT950 με SIM Vodafone (4G). Σύγκριση πρωτοκόλλων για διπλωματική.
14-15/8: Λύθηκε το blocker του Zenoh port (stack overflow, sleep livelock, lease task). Πρώτο παράλληλο 10λεπτο: 0 απώλειες, jitter Zenoh 86ms έναντι MQTT 1185ms. Βρέθηκε deadlock στον WiFi driver της ST (SpiTxLock), λύση με software watchdog 90s.
21/8: Zenoh UDP backend + queryable (το κουμπί «Ζωντανά» εδώ). Dashboard με SQLite αποθήκευση κάθε δείγματος.
23/8 νύχτα: Νέο δίκτυο 4G. Τα boards κολλούσαν σε loop αποτυχιών σύνδεσης μετά από κάθε reboot: το NetXDuo έδινε το ίδιο TCP source port και το conntrack του router έριχνε τα SYN (αποδείχθηκε με tcpdump). Fix: τυχαίο port ανά boot. Ολονύχτιο 9,4 ωρών: ισοπαλία σε ρυθμό, Zenoh καλύτερο jitter (23 έναντι 35 ms).
23/8 πρωί: Η Zenoh πλακέτα «πέθανε» οριστικά: cold-boot race πριν καν ξεκινήσει ο watchdog. Fix: hardware watchdog (IWDG) που οπλίζει πριν από όλα.
23/8 απόγευμα: Νέα λειτουργία: αποστολή ανά 5 λεπτά αντί 1s, on-demand ανάγνωση μόνο μέσω του κουμπιού. Η αλλαγή ξεσκέπασε λανθάνον bug του port: το ρολόι του zenoh-pico γύριζε πάντα 0 (ακέραια διαίρεση 100/1000=0), άρα δεν στέλνονταν ποτέ keepalives, και κάθε session πέθαινε στα 10s μόλις σταμάτησε το 1Hz να τη «ζωντανεύει». Βρέθηκε με tcpdump + gdb, διορθώθηκαν 3 συγγενή bugs. Επίσης: zombie-session detector, healthcheck στον zenohd.
Γνωστό ανοιχτό θέμα: ο WiFi driver της ST κολλάει περιοδικά (χαμένο command answer, συχνότερα σε φορτωμένο 2.4GHz κανάλι). Ο watchdog επαναφέρει την πλακέτα σε ~2,5 λεπτά. Αν το κουμπί «Ζωντανά» πέσει σε τέτοιο παράθυρο, δοκίμασε ξανά σε 1-2 λεπτά.