Spring naar de inhoud

Flukso

    Inhoudstabel

    De grafiek

    Via de site van flukso kan je netjes de status opvolgen van je verbruik. Schrik niet, soms is dit hoger dan je verwacht… Persoonlijk zit ik aan een verbruik van rond de 300 watt gemiddeld.

    De installatie

    De installatie verloopt vlotjes via een kabeltje tussen je computer en de router. Op zo’n 10 minuutjes heb je de zaak draaien. Metertje aan je laptop hangen, de nodige software doorlopen (wireless wachtwoordje en zo invullen)…

    Nog even het metertje plaatsen in de buurt van je schakelkast, een klem over de voedingskabel plaatsen en voila…
    Je hoeft dus nergens iets te onderbreken of schroeven.

    Aanpassingen

    Flukso stuurt bij default alles door naar hun webserver. Op zich niks op tegen, en als je enkel maar je stroomverbruik wil zien, is dit meer dan voldoende. Doch ik wil iets meer dan dit. Ik heb nogal graag controle over alles wat er in mijn netwerk gebeurt (beroepsmisvorming). Daarom volgen hier enkele zaken die ik deed om het toestel meer naar mijn hand te zetten…

    Inloggen (ssh) via wireless

    Hetgeen me eerst en vooral stoorde, was het feit dat je indien je meer controle wou, je moet inloggen met een kabel. OK, op zich misschien qua beveiliging niet slecht, maar ik ben nogal lui van aard. Dus dat moet veranderen, ik wil kunnen inloggen met ssh over het draadloos gedeelte…

    -Connecteer een kabel tussen de computer en de flukso meter.
    En check of je een ip-adres krijgt.
    Log in met de gebruiker root en wachtwoord root (indien nog niet gewijzigd)
    open het bestandje /etc/system/firewall met bv vi

    vi /etc/system/firewall

    Onder de sectie WLAN (area WLAN), wijzig je de status voor incoming.

    Incoming 'ACCEPT'

    Herstart het toestel

    Alles via kabel

    Persoonlijk ben ik tegen wireless. Enkel als het niet anders kan, is het nuttig. Maar als het even zonder kan…
    Eerste fase is in te loggen op de router via ssh. Dit kan je doen via kabel of wireless. Via de kabel werkt natuurlijk altijd het best. Login in volgende commando

    ssh root@192.168.111.120  (of jouw router's IP-adres)

    Als wachtwoord vul je in ‘root’
    Reset alle instellingen

    cp /rom/etc/config/firewall /etc/config 
    cp /rom/etc/config/network /etc/config
    cp /rom/etc/config/wireless /etc/config

    Voeg jouw ‘publieke’ DNS server toe aan de router. Dit zijn de IP-adressen voor telenet. In jouw geval kan dit natuurlijk iets anders zijn (bv Belgacom). Ik ben deze stap nog nergens tegengekomen, maar in mijn geval merkte ik dat er geen DNS lookup kon gebeuren.

    vi /etc/resolv.conf

    nameserver 195.130.130.133
    nameserver 195.130.131.133
    :wq

    Voer volgende commando’s uit

    cd /tmp
    wget http://www.flukso.net/files/openwrt/patches/connect.via.ethernet.patch
    cd /etc/config
    patch -p1 < /tmp/connect.via.ethernet.patch

    Als je nu reboot, zou de statistieken moeten doorgestuurd worden via de kabel, en niet meer via het wireless gedeelte.

    Instellen hostname

    Soms wil je toch een naampie geven aan de toestellen zoals jij het wil. De hostnaam kan je instellen in het bestandje

    vi /etc/config/system

    Na een reboot zou de naam aangepast moeten zijn…

    snmp activeren

    Ik draai mijn eigen huisservertje. Deze staat namelijk in voor mijn databeheer, domoticasturing, IPT… En zeker niet te vergeten, de monitoring van dit alles. Het is altijd handig om te weten wat er waar gebeurt. En hier had ik natuurlijk ook graag mijn eigen stroom statistieken bij geplaatst. Als monitoring systeem gebruik ik cacti. Nu is het flukso metertje standaard niet geconfigureerd om dit toe te laten. Natuurlijk weten wij het beter…
    Het eerste dat je moet doen, is snmp activeren op de router. Log in via ssh, en voer volgende commando’s uit
    Login in volgende commando’s, als wachtwoord vul je in ‘root’

    ssh root@192.168.111.120  (of jouw router's IP-adres) 
    opkg install snmpd-static
    opkg install snmpd
    ln -s /etc/init.d/snmpd /etc/rc.d/S50snmpd

    Pas eventueel de credentials aan voor jouw netwerk, en herstart snmpd

    vi /etc/config/snmpd 
    /etc/init.d/snmpd start

    Stroomwaarden uitlezen

    Vervolgens moet je nog zorgen dat je de gemeten electriciteit waarde ergens kan uitlezen
    Login in volgende commando

    ssh root@192.168.111.120 (of jouw router's IP-adres)

    Als wachtwoord vul je in ‘root’
    Een van de minder leuke zaken aan OpenWRT is dat er bepaalde folder overschreven worden bij het herstarten. Zo wordt de folder var gewist, de crontab overschreven… Dus hier hou je best rekening met bij het schrijven an eigen scripts!
    Voer volgend command uit, dit leest alle sensoren uit van je fluksometer. Zoek vervolgens naar de juiste id. Een id ziet eruit als 285afa070a3fd4a5f2a69f55e0b8007c. Eventueel kan je de resultaten (laatste cijfer) vergelijken met je grafieken. Of een zwaar toestel (bv electrisch vuurtje, koffiezet…) aanzetten en zien welke waarde sterk stijgt.
    Je kan de output vervolgens stoppen door CTRL-C te gebruiken.

    cat /dev/ttyS0

    Gebruik nu nogmaals hetzelfde commando, met wat extra filters om enkel het verbruik te zien van de desbetreffende sensor. Wijzig onderstaand id met jouw id.

    cat /dev/ttyS0 | head -n1 | sed -n 's/^pwr 285afa070a3fd4a5f2a69f55e0b8007c:\(0*\)\(.*\)/\2/p'

    Woordje uitleg:

    • cat /deb/ttyS0: Geef de output weer van de seriele connectie
    • head -n1: Toon enkel de eerste regel
    • sed -n ‘s/^pwr 285afa070a3fd4a5f2a69f55e0b8007c:\(0*\)\(.*\)/\2/p’: strip alles van de lijn, behalve de echte waarde

    Plaats het commando nu in een scriptje. Vervolgens laat je dit wegschrijven in een log bestand. Ik gebruik een tijdelijk log bestandje, omdat het soms wat tijd vregt om de waarde uit te lezen. En heb je dan net pech dat de snmp server op dit moment de waarde uitleest…

    Het scriptje noemt bij mij: /scripts/logSensor1.sh

    cat /dev/ttyS0 | head -n1 | sed -n 's/^pwr 285afa070a3fd4a5f2a69f55e0b8007c:\(0*\)\(.*\)/\2/p' > /scripts/log/sensor1.tmp
    cp /scripts/log/sensor1.tmp /scripts/log/sensor1.log

    Ik gebruik een 2de scriptje om de snmp daemon het logbestandje uit telezen.
    Dit noemt bij mij /scripts/snmpSensor1.sh

    cat /scripts/log/sensor1.log

    En nu moeten we we de snmp daemon nog vertellen dat hij deze waarde ‘bekend’ maakt. Hiervoor pas je het bestandje

    /etc/snmpd/snmpd.conf 
    exec root /bin/sh /scripts/snmpSensor1.sh

    En nog even de daemon herstarten natuurlijk (/etc/init.d/snmpd restart)

    Dit is mijn volledige snmpd.conf file, louter als voorbeeld:

    com2sec ro default JouwCommnityString1
    com2sec rw localhost JouwCommnityString1
    group public v1 ro
    group public v2c ro
    group public usm ro
    group private v1 rw
    group private v2c rw
    group private usm rw
    view all included .1 
    access public "" any noauth exact all none none
    access private "" any noauth exact all all all
    exec root /bin/sh /scripts/snmpSensor1.sh

    Als laatste vertel ik de flukso meter dat hij de waarde elke minuut in het logbestandje moet wegschrijven. Dit doe je via de cron (/etc/crontabs/root). Sinds de crontab voor root overschreven wordt bij het herstarten, kan je niet eenvoudigweg een regel toevoegen aan /etc/crontabs/root. Wat ik doe is het flukso bestandje een klein beetje aanpassen zodat dit hier wordt mee ingevoerd:
    Vind volgende regel in het bestandje /etc/init.d/flukso:

    >echo -e "$(date '+%M') * * * * /usr/share/lua/flukso/heartbeat.lua 0\n"'*/15 * * * * [ -z "$(ps | grep '\'flukso.lu[a]\'')" ] && reboot' | crontab -
    

    En vervang deze door

    echo -e "$(date '+%M') * * * * /usr/share/lua/flukso/heartbeat.lua 0\n"'*/1 * * * * /scripts/logSensor1.sh\n''*/15 * * * * [ -z "$(ps | grep '\'flukso.lu[a]\'')" ] && reboot' | crontab -
    

    Bij het herstarten zou de cron nu automatisch moeten aangemaakt worden met het sensorscriptje extra…

    En als alles goed is zou je fluksometer nu de waarden moeten vrijgeven.
    Je kan dit altijd testen door volgend commando’s uit te voeren op de snmp server:

    snmpwalk -v 2c -c JouwCommunityString 111.222.333.444 .1.3.6.1.4.1.2021.8.1
    snmpwalk -v 2c -c JouwCommunityString 111.222.333.444 .1.3.6.1.4.1.2021.8.1.101.1

    Cacti

    Ik gebruik zelf cacti als monitoringtool… Het voordeel dat je hierdoor hebt, is dat je in de eerste plaats de zaken live kan bekijken (zonder internet access), een beter historie (ook zoomable indien nodig)…

    Syslog activeren

    Opgelet met syslog, ik merkte bij mij dat eens ik de syslog activeerde, het routertje iets meer herstartte dan het zou moeten…

    Voeg een extra regel toe aan het systeem bestandje

    vi /etc/config/system
    option 'log_ip' '192.168.111.1' (hier komt jouw server IP adres te staan
    reboot

    Grafieken

    Ik ga ervan uit dat je mijn stapje volgende om een scriptje te schrijven om zelf de waarden uit te lezen? Zoniet kan je dat hier boven even nalezen.

    Ook vermoed ik dat je ondertussen wel doorhebt hoe je een toestel invoegt in cacti. Dus gaan we ineens door tot het aanmaken van een template om de meter te lezen:

    1. Ga naar ‘console’ – ‘devices’ en kies jouw flukso meter.
    2. Voeg onder ‘Associated Graph Templates’ de template ‘SNMP – Generic OID Template’ toe.
    3. Nog even saven (beter 1x teveel, dan 1x te weinig), en dan boven kiezen voor ‘Create Graphs for this Host’
    4. Dan kies je de waarden die jij wenst (titels, descriptions, legends…). En gewoon opletten bij volgende velden:
      • Maximum Value (‘U’ for No Maximum): Kies een waarde hoog genoeg, bv 10000
      • Data Source Type: GAUGE
      • OID: .1.3.6.1.4.1.2021.8.1.101.1

    En als alles goed is, zouden de waarden moeten binnenrollen…

    Een reactie achterlaten?