AUTOMATISERING VAN HET PROJECT:
Een volgend punt waar ik mij over heb gebogen betreft de wijze waarop ik alles ga aansturen. Zoals eerder aangegeven ga ik zelf iets in elkaar prutsen. Het verhaal hieronder is tamelijk technisch en heeft niet direct met Aquarium hobby te maken. Maar het is een manier om IT technieken dienstbaar te maken voor de Aquarium hobby. Ik begrijp dat velen hier liever voor kant en klare producten zullen kiezen en daar is helemaal niets mis mee. Het kan je veel tijd en ellende besparen. Maar als je, zoals ik, een achtergrond in de IT hebt en naast programmeur ook nog systeembeheerder bent dan komt het allemaal wel erg goed samen. Ik zal proberen het voor ieder leesbaar te houden maar enig vakjargon is niet te vermijden.
- Eerder had ik aangegeven dat ik zou gaan werken met 2de hands APC powerswitches welke ook in de computerbranche gebruikt worden. Maar inmiddels zijn de switches die ik op het oog had niet meer beschikbaar, maar belangrijker, heb ik een betere oplossing gevonden.
Wat wil ik bereiken:
- Alle apparatuur wil ik op afstand kunnen in en uitschakelen
- Ik wil alle apparatuur de nabijheid van het aquarium, de sump of de bijvul-installatie fysiek kunnen in- en uitschakelen
- Ik wil het energie verbruik van het hele aquarium gedetailleerd kunnen meten. Zodat als een pomp droog zou lopen dit te zien is aan de wijziging van het stroomverbruik. Er dient dan een waarschuwing verzonden te worden per SMS/Email en eventuele afhankelijke apparatuur (zoals bijv. een UV lamp) dient uitgeschakeld te worden.
- Berichten ontvangen als basiswaarden (bijv. de temperatuur) buiten vooraf ingestelde waarden komen.
- Het moet nog een beetje betaalbaar blijven. Ik geef toe dat dit een rekbaar begrip is 🙂.
Natuurlijk zijn er meer eisen maar bovenstaande 4 bepalen al een groot deel van de hieronder besproken uitwerking.
Ad 1
De gekozen oplossing dient dus met het internet overweg te kunnen, waar nodig of zinvol bekabeld en op andere plekken dient dit over wifi te verlopen.
Ad 2
Er dienen fysieke schakelaars en/of stekkerdozen aanwezig te zijn om de stroom van een apparaat uit te schakelen.
Ad 3 en 4.
Er dient een server te zijn die berichten kan ontvangen van de diverse apparatuur en daar vervolgens de juiste acties op kan verrichten.
Ad 5.
E.e.a. dient voor mij aanzienlijk goedkoper te zijn dan de aanschaf van een standaard aquarium computer zoals een Apex voor mijn systeem.
Doorlooptijd:
Het project om mijn Aquarium met alles er op en eraan te automatiseren wordt hieronder beschreven alsof het allemaal ineens zal worden uitgevoerd. Dat is niet het geval. Ik verwacht dat het meer dan een jaar zal duren voordat alles werkt zoals beschreven. En gaandeweg zal ik de nodige aanpassing of uitbreidingen maken op basis van de opgedane ervaringen.
Internet Of Things (IOT)
Als je de hier beschreven eisen bekijkt dan kom je al snel uit in de hoek van
Internet Of Things.
- Een voorgestelde ontwikkeling van het internet, waarbij alledaagse voorwerpen zijn verbonden met het netwerk en gegevens kunnen uitwisselen.
Veel aquarium apparatuur is al voorzien van internet techniek. Kijk maar naar de diverse lampen of pompen (Maxspect) die via de telefoon te bedienen zijn. In dat geval betreft het echter meestal geen open systemen. Je kunt alleen werken met de applicaties die de leveranciers meeleveren. Om alles aan elkaar te knopen en met elkaar te laten praten is vaak nog niet mogelijk. Maar als je wat verder nadenkt is volledige controle van alle parameters van een lamp nog niet echt noodzakelijk. Wat je wilt is dat je apparatuur kunt in- en uitschakelen!
Gebruik van computers:
Voor automatiseren heb je computers nodig. En in het hieronder beschreven project worden verschillende computer systemen gebruikt:
- Windows 10
- Centraal bedienings station mede omdat Seneye enkel op een Windows PC draait
- Mobiele telefoon (Iphone of Android)
- Voor ontvangst van waarschuwingen en het op afstand monitoren/bedienen van het aquarium
- Raspberry PI
- Voor de aansturing van alle apparatuur en uitvoeren van de ingestelde regels
- Arduino
- Voor de aansturing van diverse meet appratuur zoals waterhoogte, temperatuur etc
Gebruik van standaarden:
Voor IOT zijn al een groot aantal standaarden en bijbehorende software componenten aanwezig. Deze hoef je dus niet meer zelf te maken (programmeren). Je dient alleen een zinnige keuze te maken uit de beschikbare standaarden en beschikbare software.
Bij IOT draait het om communiceren tussen apparaten. Daarvoor dient een transport medium gebruikt te worden waarover de berichten verzonden en ontvangen kunnen worden. Vanzelfsprekend kiezen wij hier voor
Wifi en
UTP bekabeling en daarover wordt het
TCP protocol gebruikt. Tot nu toe niets nieuws voor ieder die thuis zijn computer aan de router van de internetprovider heeft gekoppeld.
Message Queuing Telemetry Transport
Maar nu een nieuwe term die bij het Internet der dingen hoort. Als een apparaat iets te melden heeft (ik ben net ingeschakeld), of iets moet doen (zichzelf uitschakelen) dan moet het dus berichten kunnen ontvangen en verzenden. Een van de protocollen die daarvoor gangbaar is betreft
Message Queuing Telemetry Transport (MQTT). Bij dit protocol wordt een centrale server ingezet die alle berichten van de diverse apparaten ontvangt en deze in een wachtrij opslaat. Deze wachtrij wordt op volgorde van binnenkomst afgehandeld. Een apparaat of een stukje software stuurt deze berichten naar vooraf ingestelde 'onderwerpen'. Het mooie is dat een ander apparaat en/of software zich kan abonneren op een of meerdere topics. Zij ontvangen dan bericht zodra in het topic waarop men geabonneerd is een nieuw bericht binnenkomt. Vervolgens kan het apparaat of software de geprogrammeerde actie uitvoeren.
Een voorbeeld:
- We hebben:
- Een Pomp1 die het stroomverbruik via MQTT berichten verstuurt naar een onderwerp met de naam Pomp1/stroomverbruik
- Een stuk software dat een regel heeft "als stroomverbruik van pomp1 lager is dan xx watt dan moet je de UV-lamp 1 uitschakelen"
- Een UV-lamp1 die zichzelf uitschakelt als het via MQTT een bericht ontvangt met onderwerp cmnd/UV-Lamp1/power off
- Pomp1 stuurt periodiek het gebruikte wattage naar het genoemde topic.
- Onze controller software heeft een abonnement op Pomp1/stroomverbruik en ontvangt dus het stroomverbruik. Op enig moment is het stroomverbruik lager dan xx watt.
- De software stuurt nu zelf een MQTT bericht naar de MQTT server voor het onderwerp cmnd/UV-Lamp1/power off
- De MQTT server ontvangt dat bericht en stuurt het vervolgens naar UV-Lamp1 want die is geabonneerd op dit topic.
- De UV-lamp1 ontvangt het MQTT bericht en schakelt zichzelf uit.
- Natuurlijk moeten er ook emails verzonden om de beheerder (ikke) op de hoogte te stellen van het probleem zodat de nodige actie ondernomen wordt om alles weer normaal te kunnen laten draaien.
SonOff
Nu denk je ongetwijfeld. Leuk en aardig maar ik ken geen aquarium apparatuur die met MQTT overweg kan. En daar heb je volkomen gelijk in. We moeten dus iets toevoegen om onze standaard aquarium apparatuur iets intelligenter te maken. Dat doen wij m.b.v. intelligente stroomschakelaars. De meeste mensen zijn inmiddels wellicht bekend met Klik-aan-Klik-Uit (KaKu) schakelingen waarmee je op afstand apparatuur kunt bedienen. Nu is Kaku schakel materiaal niet voorbereid voor het internet en daardoor niet bruikbaar maar er zijn andere apparaten die een vergelijkbare functie hebben en wel geschikt zijn voor communicatie via het internet. Het gaat dan om
SonOff producten. Deze werken via WiFi. Er zijn diverse modellen beschikbaar. Het gaat mij vooral om de versie die in staat is om het stroomverbruik te meten en te rapporteren de
SonOff Pow R2 deze kost ongeveer 12,00 per stuk.
Hindernissen:
Er is nog geen importeur die deze producten naar Nederland heeft gehaald. Je kunt het dus alleen via
website van de leverancier Itead of sites zoals
Banggood.com bestellen. Het wordt dan in een week of 4 tot 6 bij jou afgeleverd.
Het is een internet aankoop dus loop je het risico dat de douane extra kosten als BTW bij je in rekening brengt. Hetgeen je kunt vermijden door iedere bestelling onder de € 22,00 te houden zodat de douane er niet naar omkijkt. Maar daardoor duurt het nog langer voordat je alles wat je nodig hebt in huis hebt (zie verderop)
Nieuwe firmware flashen
Een ander punt is het feit dat de Sonoff apparaten voorzien zijn van firmware die nog niet geschikt is voor het gebruik met MQTT. Met de standaard Firmware kun je alleen via de eigen Itead software met de schakelaars werken en dat is niet wat ik wil. Nu is het zo dat de SonOff apparaten gebouwd zijn rondom een
ESP8266 chip waarvoor al de nodige software beschikbaar is. In dit geval gaat het om het project
Tasmota. Nadat de Sonoff apparaten van de firmware voorzien zijn die door dit project is gemaakt is de SonOff Pow R2 gereed om in mijn automatiserings project ingezet te worden.
Betrouwbaarheid
Hoewel de SonOff Pow voor 16A geschikt zou zijn moet je je ervan bewust zijn dat dit apparaat geproduceerd wordt door een Chinees bedrijf dat er alles aan doet om het apparaat zo goedkoop mogelijk te houden. Op het internet zijn genoeg gevallen te vinden waarbij de SonOff apparaten zijn doorgebrand. Maar dat is bijna allemaal indien de gebruiker een permanent zware last van bijv. 13A via de SonOff aan het schakelen is. Dat ga ik niet doen, de zwaarste last is een verwarming van 500 Watt. Ik maak mij dan ook niet zo'n zorgen over doorbranden.
Dus ieder apparaat in en om mijn aquarium, dat ik centraal wil beheren, wordt op het stroomnet aangesloten via een SonOff. Daarbij krijgt iedere SonOff een eigen MQTT topic zodat alles individueel is te monitoren en in of uit te schakelen.
- Daarbij zal ik overigens de SonOff aansluiten op een standaard stekkerdoos. De elektriciteits kabel van het betreffende apparaat wordt dan op deze stekkerdoos aangesloten. Ik kan dat apparatuur individueel makkelijk blijven loskoppelen en vervangen mocht dat nodig zijn.
- De Tasmota firmware maakt het ook mogelijk om iedere SonOff rechtstreeks via de browser te beheren op basis van IP-adres of eigen hostnaam.
Programmeren van de bedrijfsregels:
OK, wij hebben nu een keuze gemaakt voor het MQTT protocol in combinatie met SonOff schakel apparaten. Maar hoe bepalen wij nu wat er moet gebeuren als bijv. pomp1 daadwerkelijk uitvalt of andere op te stellen bedrijfsregels uitgevoerd moeten worden. Dat vereist programmeer werk. Daar ben ik niet vies van maar gelukkig gaan de ontwikkelingen op het gebied van Internet protocollen heel snel. Inmiddels is er een visuele manier om de acties te bepalen die op basis van MQTT berichten ondernomen moeten worden. Daarmee hoef je niet te programmeren op klassieke manier maar kun je visueel workflows aan elkaar koppelen. Het project dat je daarvoor gebruikt heet
Node Red ik kan daar veel over zeggen maar dat is al eerder en beter gedaan door anderen en ik verwijs je graag naar
deze video. Node red is software en daarvoor heb je dus een computer nodig.
Met Node Red zal ik ook een dashboard (bedieningsscherm) configureren waarmee ik via een browser de diverse apparatuur kan bedienen. Daarvoor de bediening computer (zie verderop) met een touchscreen uitgerust worden zodat alles van daaruit te bedienen is.
Raspberry PI:
Zoals uit het bovenstaande blijkt is het voor het MQTT protocol noodzakelijk dat er een MQTT server wordt ingericht. Ook Node Red vereist een computer. Verder dient deze computer in staat te zijn om de MQTT berichten van de verschillende SonOff schakelaars te ontvangen. Dit is nu precies een klus waarvoor de
Raspberry PI uitermate geschikt is. Deze heeft weinig stroom nodig en zijn meer dan krachtig genoeg om de software te draaien die nodig is. Er zijn diverse software pakketten te verkrijgen die als MQTT server gebruikt kunnen worden. Maar een van de meest gangbare welke ook op een goedkope Raspberry PI kan draaien is
Mosquitto. Ook de Node Red software gaat op de Raspberry PI draaien. Om zowel Mosquitto en Code Red op een Raspberry te installeren kan ik
deze instructie video aanbevelen (de commentator stem zou die van Jeremy Clarkson kunnen zijn). De Raspberry PI wordt met UTP kabel aangesloten op het huisnetwerk.
Meerdere lokaties:
Ik heb 3 locaties waar ik de volgende apparatuur zal moeten schakelen:
- Showbak
- 8 lampen
- 2 opvoerpompen
- 2x Maxspect 280 pompen
- 2x Maxspect duo 9 pompen
- 1x webcam voor remote monitoring
- Sump en Quarantaine ruimte
- 1x afschuimer
- 1x toevoerpomp voorafschuimer
- 2x UV-lamp
- 2x heater 500 watt
- 2x Eheim 2224
- 1x lamp refugium
- 1x webcam voor remote monitoring
- Water opslag (in de garage
- Opslag zeewater IBC 600 liter
- 1x Opvoerpomp
- 1x verwarming
- Opslag Osmose water IBC 600 liter
- 1x Opvoerpomp
- 1x verwarming
- 1x Lucht pomp
Op iedere locatie zal een Arduino gebruikt gaan worden voor het monitoren van:
- de waterstanden (hoogste niveau, laagste niveau)
- De temperatuur (in de hoofdbak wordt dat door de Seneye gedaan
Arduino
Voor de hierboven genoemde metingen zal ik gebruik gaan maken van een Arduino-achtig bordje. Deze zal zodanig geconfigureerd worden dat ook deze MQTT berichten gaat verzenden met de gemeten waarden. Dit vereist allemaal geen krachtige processor dus Arduino's zijn daarvoor prima geschikt.
Wellicht dat ik in de toekomst nog extra sensors in de hoofdbak zal plaatsen bijv. om de geleidbaarheid van het water te meten. Maar dat is voor de toekomst.
Bedienings computer:
Nogal wat apparatuur die ik ga gebruiken is via een web browser te beheren:
- Het Node Red user interface dat ik ga maken
- De Maxspect pompen
- De Seneye
- De arduino's
- De Raspberry PI
Daarom zal ik direct bij het Aquarium een kleine normale PC installeren. Deze PC krijgt een touch screen waarmee ik in principe alle apparatuur kan gaan sturen. Daarnaast zal op deze PC de Seneye software gaan draaien. De PC wordt van Windows 10 voorzien. Dit maakt het dan mogelijk om alles te integreren met Microsoft Cortana. Het idee daarvan is dat ik spraak commando's naar de PC kan roepen. Cortana zal dan de door mij aan het commando gekoppelde MQTT bericht(en) gaan versturen. Rond het aquarium loop je tijdens onderhoud namelijk altijd met natte handen rond. Dan is het bedienen van een touchscreen niet altijd even handig. Spraak commando's daarentegen blijven gewoon werken.
Noodstroom:
Automatisering die zonder stroom werkt is zeldzaam. Het is echter redelijk essentieel dat de basis elementen zoals de Arduino's, de Raspberry PI en de Windows bedienings pc blijven werken bij stroom uitval of onderhoud.
Zo, voor dit moment genoeg uitgeschreven. Laat de reacties maar komen.