[vz-users] Betriebsstundenzähler über Schaltzustand Brennner
dl4huf
dl4huf at t-online.de
Sun Mar 10 23:10:51 CET 2013
Hallo
nachdem ich das ganze WE leider erfolglos damit verbracht habe eine
RFM12 auf einem Pollin-Addon-Board zum laufen zu kommen brauchte ich
noch ein Erfolgserlebnis.
Hier die Umsetzung meiner Idee für den Betriebsstundenzäher in Control6.
Es gab zwar auch hier jede Menge Probleme bis es so lief wie es soll,
aber so gehts.
Benötigt wird :
- httplog aktiviert und richtig configuriert
Service:"server.local"
Path: "/middleware.php/data/"
alles andere aus/default
- Named Pins
den Ausgang für die LED kann man weg lassen, die Zeilen unter
entsprechend löschen
- Clock-Support über ntp
Wichtig ! den Eingang entprellen, vor allem wenn man Relaiskontakte
verwendet. Am einfachsten mit einem Kondensator von 100n..1uF zwischen
Eingang und Masse.
Das Script zählt die Zeit wie lange der Eingang auf Masse gezogen wird
mit einer Auflösung von 1s. Mindestzeit ist aber ca. 3s !
Ich musste ein paar Verzögerungen einbauen, das das ethersex nicht so
schnell nacheinander die http-Requests absetzten kann.
Wenn man weitere http-Requests per httplog benutzt oder die middleware
auf dem Server zu langsam ist kann es trotzdem passieren, das welche
verloren gehen. Ein Request muss erst abgearbeitet sein bevor der
nächste kommt.
Ich habe leider keine Ahnung wie man das verhindern kann, sprich man
eine Warteschlange einrichten kann.
Wenn jemand eine andere Idee hat, gern ...
Gruß Ronald
p.s. die HTTPLOG-Zeilen sind bis zum ; in einer Zeile.
C6_HEADER(`/* s will be in control6.h */')
#include "protocols/httplog/httplog.h"
#include "services/clock/clock.h"
CONTROL_START
CLOCK_USED();
PIN_OUTPUT(LED);
PIN_PULLUP(INPUT);
ECMD_GLOBAL(on_time, -1, uint32_t);
ECMD_GLOBAL(off_time, -1, uint32_t);
ECMD_GLOBAL(state, -1, uint16_t);
THREAD(Betriebsstunden)
ON state==1 DO
on_time=clock_get_time();
HTTPLOG("11d5f620-898d-11e2-a894-43cd1a3787d5.json?ts=%lu000&value=0&operation=add",on_time);
PIN_SET(LED);
state=0;
END
ON state==2 DO
off_time=clock_get_time();
HTTPLOG("11d5f620-898d-11e2-a894-43cd1a3787d5.json?ts=%lu000&value=%d&operation=add",off_time,off_time-on_time);
WAIT(2);
state=0;
HTTPLOG("11d5f620-898d-11e2-a894-43cd1a3787d5.json?ts=%lu000&value=0&operation=add",off_time+1);
PIN_CLEAR(LED);
END
THREAD_END(Betriebsstunden)
ON STARTUP DO
state=0;
THREAD_RESTART(Betriebsstunden);
END
ON PIN_FALLING(INPUT) DO state=1; END
ON PIN_RISING(INPUT) DO state=2; END
CONTROL_END
More information about the volkszaehler-users
mailing list