allez vooruit. eentje van mij ..
Wat doet het ? Een Linux server bewaken... Ja je leest goed. Een LINUX server .
Ik heb een home automation systeem wat intern een Linux doos (omdat dat zo 'betrouwbaar' schijnt te zijn) is (OpenWRT based). Draait op een broadcomm MIPS based core.
Dat ding babbelt intern tegen een Z-Wave RF interface die alle lichten in huis kan bedienen. Het ding interfaced ook met de IPcams in huis en heeft een VPN toegang via een DDNS client. Zo kan ik van buitenaf deuren openen , temperatuur instellen, lichten en apparaten bedienen etc.
Het ding is intern een LUA ( programmeertaal ) motor met een GUI. het heeft een heel mooie user interface.
Maar het heeft 1 vervelende eigenschap.. het crasht af en toe.
Als het werkt werkt het goed , maar om een of andere reden loopt het soms in de soep. Alleen powercycle helpt dan.
Die idioten die het ding gemaakt hebben weten niet hoe ze met een watchdog moeten omgaan ( ik heb uren aan de telefoon gezeten met de developers ervan). Die broadcomm chip heeft een watchdog maar ze hebben die gedisabled omdat het 'te moeilijk is' en 'toch niet werkt' (omdat ze vanop wel 30 verschillende plaatsen die watchdog resetten.. tjah. watchdogs werken alleen als je ze vanop 1 en slechts 1 plaats cleart....
Er zijn nog allerhande andere 'probleempjes' die ze maar niet opgelost krijgen. ( vele zijn omdat ze compleet onwetend zijn op gebied van hardware , en omdat ze geen officiele licentie op Zwave hebben maar een 'broken source' (onvolledige en unlicenced) stack gebruiken. Enfin het is een lang verhaal. Ze hebben serieuz flaters geschoten in hun hardware design ook... ( is eigenlijk een omgebouwde router waar ze dingen aan vastgeplakt hebben)
Het basis idee is goed maar de uitvoering is krakkemikkerig. ( ze gebruiken OpenWRT. Dat op zich is al vuiligheid. Het ding heeft verdikke meer dan 90 seconden nodig om te booten. Ik ken statisch gecompileerde linux distros die in 2 seconden booten ! (MontaVista, maar ja , dat kost weer geld he... OpenWRT is gratis shit)
Dus : Sysmon.
Dit ding plugt in op het domotica systeem en maakt zich kenbaar als seriele poort. OpenWRT heeft standaard drivers voor FTDI232 aan boord.
Sysmon verwacht elke 2 minuten een berichtje met een '@' sign. Een LUA scriptje in de main thread verzorgt dat. Als er langer dan 2 minuten niks wordt gehoord dan 'tickt er een klok af... 6 minuten en de watchdog bijt.. Powercycle . als de main thread vastzit ligt het domotica systeem toch stil. Ook als de 'ping' te snel komt wordt er aan de alarmbel getrokken. dus als de main thread ocht vastzitten in 'message sending' dan cycle ik ook.
Het lost ook andere 'hardware' problemen op. Dat domotica systeem is afhankelijk van NNTP. met andere woorden als je internet connectie wegvalt lopen je timed events (je kan timed events maken maar ook triggeren op dingen zoals sunrise / sunset ) niet goed meer. Dus een RTC chip. In het main lua script is er een commando om te checken of er NNTP verbinding is. Indien niet ga ik de tijd halen uit de RTC. Indien NNTP restored wordt zet ik de juiste tijd in de RTC. (dallas chippie) Sysmon houdt ook een log bij van hoeveel keer hij al een reset heeft moeten doen.
De logs zijn opvraagbaar. (en zeggen dat die broadcomm processor een I2C interface heeft... maar dat was weer 'te moeilijk' voor de developers waarchijnlijk... )
Je kan een LiIon battery pack inpluggen ( kant en klaar 12 volt pack ) alsook de charger ervoor.
Sysmon schakelt naadloos over van netspanning naar batterij en terug. het is dus meteen een UPS.
De bovenste regel van het display toont het IP adres van de server.
( vindt dat maar op je eigen netwerk ... er is een discovery tool maar dan moet je weer software installeren. bah ... en om een of andere reden gebruiken ze alleen DHCP. je kan geen static IP opgeven... het is de bedoeling dat je altijd via hun portal site binnengaat. Ik heb daar geen zin in. Toon mij het Ip en ik ben content.)
Dus ik los een aantal tekortkomingen / problemen op.
Ik heb het gebreadboard en het werkt.
De finale versie krijgt wel een 3 regelig display ( COG type met backlight. Mouser heeft er )
zo heb ik een status line onderaan, het ip adrerss in het midden en de bovenste lijn kan gezet worden via een LUA commando.
Gemaakt met een PIC18F2550 ( jaja een PIC. Nu zijn er waarschijnlijk ene pak die van hun stoel vallen. Linux, PIc's ... 't moest rap gaan )
Code is gemaakt in Swordfish
Als het printje klaar is post ik wel de volledige uitwerking