<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=utf-8" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 11.00.10586.162">
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2 face=Arial>Hallo,</FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT> </DIV>
<DIV><FONT size=2 face=Arial>eine Implementierung für MeterExec hab ich mal 
gemacht. </FONT><FONT size=2 face=Arial>Hab das auch per EMail bekannt gegeben, 
aber ich sollte dann Pull-Requests dafür erstellen - was ich aber mangels 
Rechten direkt nicht darf. </FONT></DIV>
<DIV><FONT size=2 face=Arial>Nach einigem Durchprobieren sollte es mit einem 
Git-Clone->merge->was_weiß_ich_ doch irgendwie gehen - bin aber noch nicht 
dazu gekommen. </FONT></DIV>
<DIV><FONT size=2 face=Arial>Ich häng die Sourcen einfach an diese EMail nochmal 
mit dran, den EMail-Text s.u.</FONT></DIV>
<DIV><FONT size=2 face=Arial>Achtung: die Sourcen passen zu einem Master 
Mitte/Ende Januar, wie es jetzt aussieht weiß ich nicht.</FONT></DIV>
<DIV><FONT size=2 face=Arial>Es sind zwar einige Änderungen, sie halten sich 
abernoch im Rahmen. </FONT></DIV>
<DIV><FONT size=2 face=Arial>Der vzlogger läuft seitdem auch immer noch stabil. 
</FONT></DIV>
<DIV><FONT size=2 face=Arial>Größere Probleme habe ich dabei eher mit 
vzlogger-W1therm (3 Sensoren, einer mit parasitärer Stromversorgung) - der 
stoppt öfter oder startet nach einem Reboot manchmal gar nicht erst (die anderen 
Meter - auch 'exec' laufen aber weiter). Allerdings verwende ich auch keine 
Hardware-Erweiterungen, sondern 'RasPi-native' und da wird 1wire halt nur 
emuliert, bzw. versucht das Beste aus den vorhandenen Möglichkeiten zu machen. 
Für solcherart angebundene 1wire-Temp-Sensoren sollte in Meter-W1therm 
zusätzlich auch alles unter -60 und über 130C ignoriert werden, da das die 
Sensoren zwar manchmal melden aber gar nicht können (hatte auch schon mal Werte 
mit -87 und +1120, leider jeweils mit CRC=YES). Die 'besseren' Sensoren können 
offiziell -55 bis +125.</FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT> </DIV>
<DIV><FONT size=2 face=Arial>Viel Spaß</FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT> </DIV>
<DIV><FONT size=2 face=Arial>tschau</FONT></DIV>
<DIV><FONT size=2 face=Arial>hermann</FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT> </DIV>
<BLOCKQUOTE 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; PADDING-RIGHT: 0px; MARGIN-RIGHT: 0px" 
dir=ltr>
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=dominik@benner.ws href="mailto:dominik@benner.ws">Dominik Benner</A> 
  </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A 
  title=volkszaehler-dev@demo.volkszaehler.org 
  href="mailto:volkszaehler-dev@demo.volkszaehler.org">volkszaehler.org</A> 
  </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Tuesday, March 22, 2016 12:49 
  PM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> [vz-dev] MeterExec</DIV>
  <DIV><BR></DIV>
  <DIV dir=ltr><SPAN style="FONT-SIZE: 12px">Hallo,</SPAN>
  <DIV style="FONT-SIZE: 12px"><BR></DIV>
  <DIV style="FONT-SIZE: 12px">im Wiki steht, dass das Exec Meter "untested" 
  ist. Jedoch scheint es mir nicht implementiert. Gibt es eine Binary oder auch 
  sourcen, die dieses Meter implementiert haben?</DIV>
  <DIV style="FONT-SIZE: 12px"><BR></DIV>
  <DIV style="FONT-SIZE: 12px"><BR></DIV>
  <DIV style="FONT-SIZE: 12px">Gruß</DIV>
  <DIV style="FONT-SIZE: 12px"><BR></DIV>
  <DIV style="FONT-SIZE: 12px">Dominik</DIV></DIV></BLOCKQUOTE>
<DIV style="FONT-SIZE: 12px" dir=ltr><FONT size=2 
face=Arial>-------</FONT></DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr><FONT size=2 face=Arial></FONT> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr><FONT size=2 face=Arial>Hallo 
Herrmann,</FONT></DIV>
<DIV> </DIV><FONT size=2 face=Arial>
<DIV style="FONT-SIZE: 12px" dir=ltr><BR>erstmal Klasse dass Du Dich mit vz 
auseinander setzt und sogar Verbesserungen mitbringst! In der Form können wir 
sie leider nicht verarbeiten- wir wissen nicht auf welchem Stand Du Deine 
Änderungen gemacht hast und vmtl. hat auch niemand die Zeit die Dateien manuell 
zu mergen.</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr>Unser Werkzeug für die Softwareentwicklung 
ist github- unter <A 
href="https://github.com/volkszaehler/vzlogger">https://github.com/volkszaehler/vzlogger</A> 
kannst Du sog. "Pull Requests" erstellen- bitte einen je Änderung.</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr><BR>Viele Grüße,</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr>Andreas</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr><BR>PS.: und ganz wichtig: bitte niemals 
auf alte Mailinglistenthemen mit "Reply" antworten sondern _immer_ ein neues 
Thema anfangen. Sonst wirds einfach zu unübersichtlich....</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr> </DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr><BR>2016-01-27 2:46 GMT+01:00 
mail_web_hed007 <<A href="mailto:hed007@web.de">hed007@web.de</A>>:</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr>Hallo,</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr>ich bin erst vor Kurzem auf 'volkszaehler' 
gestoßen und finde hier vieles, was ich schon immer haben wollte.<BR>Allerdings 
bin ich auch auf ein paar Ungereimtheiten gestoßen und habe daraufhin ein 
bißchen rumgebastelt.<BR>Ich hatte schon seit Ewigkeiten nichts mehr mit C/C++ 
zu tun und mit der STL stehe ich immer noch auf Kriegsfuß.<BR>Ich kenne mich mit 
den Gepflogenheiten hier nicht aus und weiß nicht, wie hier mit Änderungen und 
Erweiterungen verfahren wird. Mit 'Open-Source' hatte ich bisher nur als 'User' 
zu tun.<BR>Ich schicke meine Änderungen hier einfach mal mit, hoffe das sich das 
jemand mal ansieht und ein paar sinnvolle Sachen findet, die evtl. übernommen 
werden können.</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr><BR>Im Einzelnen:</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr>'scaler':<BR>Der 'scaler' hängt am 
Channel-Objekt und sollte damit auch von diesem ausgewertet werden. Wie es 
eigentlich sein sollte steht in Channel.cpp am Schluß als Kommentar.<BR>Wie dem 
auch sei, aktuell wird der 'scaler' an den verschiedensten Stellen verwendet und 
ausgewertet (MySmartGrid, MeterOCR, ...) , so daß eine zentrale Behandlung nicht 
mehr möglich ist.<BR>Deshalb wird der 'scaler' bei meinen Änderungen bei der api 
MySmartGrid am Channel-Objekt deaktiviert und auch sonst nur bei den Metern 
'Exec', 'D0' und 'W1therm' aktiviert (threads.cpp).<BR>Da 'scaler' ein int ist, 
ich aber einen Teiler brauchte, wird für positive Werte der value mit dem scaler 
mulipliziert, bei negativen mit dem Absolutwert des scalers dividiert und bei 
'0' werden die Input-Values ignoriert.</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr>Files: Channel.hpp, Channel.cpp, 
tests_mocks_Channel.hpp als tests/mocks/Channel.hpp, threads.cpp</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr><BR>MeterW1therm:<BR>hier sollte der Wert 
'85000', bzw '85.0' ignoriert werden , da das der Initial-Wert ist, wenn die 
Konversion noch nicht stattgefunden hat oder fehlerhaft war. Leider wird in 
diesem Fall vom Baustein auch der Status-Ok als 'YES' ausgeliefert, so daß nur 
der Wert an sich als Indiz bleibt, der zu ignorieren ist.<BR>Allerdings tritt 
das fast nur an der Standard-Schnittstelle de RasPi nach einem Kaltstart 
auf.<BR>Aber es stört schon sehr, versaut das Diagramm massiv und wird im 
wirklichen Leben von den Bausteinen auch nur im Fehlerfall/Problemfall 
ausgeliefert.</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr>Files: MeterW1therm.cpp</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr><BR>'MeterExec':<BR>Ich wollte unbedingt 
die CPU-Temperatur meines RasPi mit protokollieren - der hängt im Keller und 
läuft normalerweíse im Runlevel=3 (Netzwerk). Interessiert hat mich vor allem 
der Unterschied zu Runlevel=5 (Multiuser/graphische Oberfläche/X-Server).<BR>Das 
MeterFile erwies sich für diesen Zweck allerdings als Flop und ist - ehrlich 
betrachtet - zu Nichts zu gebrauchen.<BR>Den Exec-Meter aus dem Config-Editor 
gabs dann im echten Leben gar nicht und in den Sourcen war tatsächlich nur ein 
inaktiver Rahmen zu finden.<BR>Ich hab deshalb mal einen MeterExec auf Basis des 
MeterFile implementiert.<BR>Durch die Modifikationen mit dem scaler (s.o.) war 
auch die Anpassung auf einen 'lesbaren' Wert relativ einfach.<BR>Hier ein 
Beispiel-Konfigurations-Fragment nach dieser 
Änderung:<BR>{<BR>     "enabled": 
true,<BR>     "allowskip": true,<BR>     
"interval": 10,<BR>     "aggtime": 
-1,<BR>     "aggfixedinterval": 
false,<BR>     "channels": 
[<BR> {<BR>         "uuid": 
"e6b19980-c3a5-11e5-b52d-535f1e98f80e",<BR>         
"identifier": "",<BR>         //"api": 
"volkszaehler",<BR>         
"middleware": "<A 
href="http://localhost/middleware.php">http://localhost/middleware.php</A>",<BR>        
"scaler": -1000,<BR>       
},<BR> {<BR>         "uuid": 
"691dc7f0-c414-11e5-802e-4f04aa6c0c22",<BR>         
"identifier": "test",<BR>         
"middleware": "<A 
href="http://localhost/middleware.php">http://localhost/middleware.php</A>",<BR>        
"scaler": -100,<BR>       
},<BR>     ],<BR>     "protocol": 
"exec",<BR>     "command": "cat 
/sys/devices/virtual/thermal/thermal_zone0/temp",<BR>     
//"command": "cat /sys/devices/virtual/thermal/thermal_zone0/temp; echo \"123 
test\";",<BR>   "format": "$v $i", // $t=timestamp $v=value 
$i=identifier<BR>   },</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr>Der auskommentirte 'command' mit dem 'echo' 
macht zwar keinen Sinn, zeigt aber schön, wie Werte aus einem Aufruf auf mehrere 
Channel verteilt werden können.<BR>Werte ohne identifier-Angabe landen beim 
Channel mit '"identifier": ""'.</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr>Files: Meter.cpp, MeterExec.hpp, 
MeterExec.cpp, MeterMap.cpp</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr><BR>Was mir noch aufgefallen ist:<BR>Ich 
habe die Entwicklung tatsächlich direkt auf einem RasPi durchgeführt (allerdings 
auf einem B+...).<BR>Und das auch noch ohne einen aktuellen, komfortablen 
Debugger, sondern mit 'EXHIBIT NAMES'. Aber das sagt wahrscheinlich nur einem 
altgedienten Cobol-Programmierer was und bedeutet: Debugging per 
'print-Statements'.<BR>Die Übersetzungszeiten haben mich allerdings immer an 
meine Anfangszeiten als Programmierer erinnert. Das war - ehrlich gesagt - vor 
einer Ewigkeit, aber auch eine neue oder vergessene Erfahrung.<BR>Da ich 
genügend Zeit hatte, den Fortschritt zu verfolgen, ist mir auch aufgefallen, daß 
die meiste Zeit der Übersetzung den Tests gewidmet ist.<BR>Das sollte sich 
jemand, der sich auskennt vielleicht mal ansehen.<BR>Das eigentliche Projekt 
scheint relativ schnell durch zu sein, aber der ganze Test- und Mock-Scheiß der 
dauert und dauert und dauert...<BR>Ich hätte die Übersetzung auch auf meinem 
Linux-Server machen können, aber ich bin ja - hoffentlich - kein Feigling.</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr><BR>tschau<BR>hermann</DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr> </DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 12px" dir=ltr><FONT 
size=2></FONT></FONT> </DIV></BODY></HTML>