Pond[CTRL] Update

Eindelijk vakantie! Vijver schoongemaakt en ook hoog tijd voor een update aan Pond[CTRL]:

  • Aantal meetwaarden waarvan het gemiddelde genomen wordt gereduceerd van 120 naar 25.
  • Getest om IoT-updates via HTTPS te versturen maar niet geïmplementeerd. Reden hiervan is dat de HTTPS-library ruim 20% extra geheugen inneemt waardoor er te weinig ruimte overblijft voor updates aan functionaliteit.
  • Uptime wordt nu geüpload naar de API, waardoor ik bij kan houden of de WiFi-module herstart is (uptime < vorige uptime = herstart). Mochten er herstarts voorkomen, dan is het zaak om uit te zoeken wat dit veroorzaakt.

Bugfix:

  • Status LED en automatische updates werkten niet meer. De LED toont of er een actieve IoT-verbinding is. Het bleek een probleem te zijn met het verwerken van het server-resultaat (timeout bij ophalen resultaat van server). Gefixt vanaf versie 1174.

Next:

  • Verbinden met timeserver, zodat sockets tijdgestuurd geschakeld kunnen worden.
  • Zorgen dat sockets handmatig in- en uitgeschakeld kunnen worden (override).
  • Instelbaar maken van de duur van de voederpauze (nu standaard 30 minuten).
  • Sockets schakelen dmv logica, bijvoorbeeld TEMP1_HIGH & TEMP1_LOW. Het idee is om sensor- en (toekomstige) timertoestand te kunnen combineren als voorwaarde oma een socket in of uit te schakelen.
  • Verder met de iOS-app.
Huidige firmwareversie: 1175

Pond[CTRL] Update

Vanaf nu is het mogelijk de API-key te genereren in de webinterface, via menu-optie ‘API Key’ en deze op te slaan.

Helaas bleek er een fout te zitten in de firmware waardoor sommige instellingen niet vanuit het geheugen geladen werden na een herstart, waaronder de API-key. Deze bug is verholpen in de laatste firmware.

Huidige firmwareversie: 1142

Pond[CTRL] Twee maanden live!

Na ruim twee maanden testen en enkele updates durf ik te zeggen dat het project nu al mijn verwachtingen overtreft!

Het is ook meer dan een gimmick en heeft me al meer dan eens nuttig geholpen:

  • Bij mijn strijd tegen draadalt in de vijver heb ik uiteindelijk besloten over te gaan op middeltjes omdat het weghalen niet hielp. Na het toevoegen van het middel op 1 juni zakte de zuurtegraad flink (zie grafiek ‘Zuurtegraad’). Aangeraden werd om de kuur na een week te herhalen, maar dat heb ik gezien de meetwaarden dus nog niet gedaan.
  • Bij onderhoud aan de waterval bleek ik de slang onjuist aangesloten te hebben. De niveauschakelaar heeft de inhoud van de vijver gered door de circulatiepomp tijdig uit te schakelen.

Meetwaarden zijn ook vrijwel compleet. Er wordt minder dan 1% meetwaarden niet geregistreerd (bron: database export waarbij bij dagelijks 1140 meetwaarden per sensor aanwezig moeten zijn voor een 100% score, dit bleek rondom de 1130 te liggen).

Onderstaande grafieken tonen de meetwaarden van afgelopen maand, waarbij in de grafiek voor sensor ‘Zuurtegraad’ duidelijk te zien is wanneer er chemicaliën tegen draadalg gebruikt werden.

Klik om te vergroten

Klik om te vergroten
Klik om te vergroten

De komende periode zal ik, zodra ik tijd beschikbaar heb voor het project, de volgende volgorde van ontwikkeling aanhouden:

  • Toevoegen API-Key functionaliteit aan de webinterface.
  • Ontwikkelen HomeBridge plugin, zodat meetwaarden zichtbaar zijn en een voederpauze geactiveerd kan worden vanuit de iOS woning-app.
  • Verder ontwikkelen van de iOS-app.
  • Verder ontwikkelen functionaliteit Pond[CTRL] Dashboard met oa. e-mail notificaties.

Pond[CTRL] Update

Om Pond[CTRL] met andere apparaten te laten communiceren zonder handmatig in te hoeven loggen, als voorbereiding op de gewenste HomeBridge-koppeling, ondersteunt de firmware nu autorisatie door middel van een API-key. Standaard is er geen API-key ingesteld waarmee API-autorisatie uitgeschakeld is. Zodra de key ingesteld is kunnen apparaten door middel van deze key alle functionaliteit van Pond[CTRL] bedienen.

Ondanks dat de firmware nu autorisatie middels een API-key ondersteunt, kan de API-key nog niet ingesteld worden vanuit de webinterface. Dit zal de eerstvolgende stap worden.

Huidige firmwareversie: 1136


Pond[CTRL] Nieuwe User Story

Omdat ik erg weinigtijd voor de ontwikkeling van de App heb, wil ik een simpel alternatief om Pond[CTRL] toch via m’n iPhone te kunnen bedienen. Zo ontstond de volgende user story:

Als iPhone-gebruiker wil ik Pond[CTRL] kunnen bedienen via de Woning-app, zodat dit niet langer omslachtig via een browser met login hoeft.

Een simpele oplossing lijkt me via HomeBridge en de Woning-app. Komende dagen zal ik inventariseren welke aanpassingen aan de firmware nodig zijn (bijvoorbeeld authenticatie tussen HomeBrigde en Pond[CTRL]) en hoe complex het schrijven van een Plug-in voor HomeBridge is.

Pond[CTRL] Update

Er zat een bug in de firmware waarbij stekkers met functie ‘altijd aan’ of ‘altijd uit’ niet reageerden op voederpauze. De functie ‘altijd aan’ en ‘altijd uit’ deden dus hun naam wel eer aan, echter bleek dit niet handig.

Na aansluiten van schrikdraad (moet altijd aan staan i.v.m. een terugkerende reiger) op een stekker wilde ik dat deze tijdens voeren uit ging. Wel zo veilig voor de kids (en mijzelf).

De bug is nu uiteraard opgelost.

De enige (nu bekende) fout is nog steeds dat de pH-sensor extreem afwijkende waarden geeft bij een omgevingstemperatuur van minder dan ongeveer 7,5˚C. Dit lijkt niet afhankelijk van de watertemperatuur. Nu de temperatuur in de nacht niet zo ver meer zakt is het moeilijk deze fout te reproduceren. Voor de koude nachten zich weer laten zien, wil ik een tweede pH sensor installeren om te kijken of het te maken heeft met de sensor of wellicht het hardware-ontwerp. Maar: eerst maar eens genieten van de warme dagen!

Huidige firmwareversie: 1135

Pond[CTRL] Update

Vandaag heb ik zeven prachtige Euro Koi mogen verwelkomen in de vijver. Ik hoop ze ooit zo vertrouwd met mensen te kunnen maken dat ze uit je handen eten. Om daarmee te beginnen heb ik de voederpauze-functie ingebouwd. Ik wil de Koi alleen voeren tijdens een voederpauze, waarbij alle pompen uitgeschakeld zijn. Ik hoop dat de vissen zo slim worden dat als er geen stroming is, ze het besef hebben dat er gevoerd wordt. Ik voer alleen in een voederring, zodat ik na het voeren het overtollige voer gemakkelijk kan verwijderen.

In de firmware moet de voederpauze automatisch uitgeschakeld worden na een half uur. Deze functie bleek verwijderd te zijn bij het verplaatsen van de hoofdfuncties naar de WiFi-module. De firmware is nu aangepast en werkt weer naar behoren.

Daarnaast heb ik vandaag een eerste begin gemaakt aan de iOS-app. Omdat ik nog helemaal niet bekend was met XCode en SwiftUI heb ik eerst een aantal online tutorials moeten doorlopen.

Huidige firmwareversie: 1133

Pond[CTRL] Update

Er zat een bug in de firmware waarbij uitgeschakelde sensoren een alarm konden verzoorzaken. Dit is opgelost vanaf firmwareversie 1130.

Huidige firmwareversie: 1130

Pond[CTRL] Update

De vernieuwde taakverdeling tussen microprocessor en WiFi-module blijkt een goede zet te zijn geweest. Pond[CTRL] draait vele malen stabieler en heeft de afgelopen 24 uur nog geen enkele ongeplande reset gehad (een ongeplande reset is een reset door bijvoorbeeld een hard- of softwarefout).

Vandaag heb ik de API en de firmware van de WiFi-module aangepast. De API geeft nu een json-resultaat na uploaden van data waarin de meest firmware-versie en de status vermeld staan. Indien de API-call succesvol was, dan zal de programmeerbare LED gaan branden wat vanaf nu aangeeft of er een succesvolle link is met de API. De LED brandt net zo lang tot er een negatieve of geen status ontvangen wordt. Door de versienummers van de huidige firmware en de nieuwste firmware te vergelijken, wordt er nu een automatische update in gang gezet.

Huidige firmwareversie: 1129

Pond[CTRL] Update

Omdat Pond[CTRL] nu naast de vijver hangt in een waterdichte behuizing, is het lastig om software van de microprocessor te updaten. Hierdoor heb ik de beslissing genomen om alle logica en berekeningen te verplaatsen van de software van de microprocessor naar die van de WiFi-module welke op afstand bij te werken is.

De microprocessor doet nu niets anders van sensorgegevens ophalen en luisteren naar opdrachten van de WiFi-module. De WiFi-module kan vanaf nu ook stekkers schakelen, de status-LED besturen en buzzer (de)activeren.

Daarnaast was het geven van opdrachten vanaf de online app te complex. Er moest gewerkt worden met byte-arrays die direct doorgespeeld werden naar de microprocessor. Ik heb opdracht-URLs toegevoegd aan de webserver van de WiFi-module, waarmee aan de hand van simpele opdrachten gecombineerd met POST-data alles op te halen en in te stellen is. Voor test-doeleinden is de ‘query?data=’-URL nog steeds aanwezig maar werkt alleen zodra ingelogd op de module.

De microprocessor crashte, ondanks het toevoegen van varistors, bij het schakelen van meerde apparaten gelijktijdig. Om dit te voorkomen heb ik een kleine vertraging van het schakelen van elk relais toegevoegd waarmee het probleem verholpen lijkt.

Enige probleem op dit moment is nog steeds de foute meetwaarden van de pH-sensor bij een buitentemperatuur van onder de 10 graden Celcius. Het vreemde is dat de meting niet afhankelijk is van de watertemperatuur, terwijl de sensor in het water hangt.