<!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.9600.18161">
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV>
<DIV><FONT size=2 face=Arial>Hallo,</FONT></DIV>
<DIV><FONT size=2 face=Arial></FONT> </DIV>
<DIV><FONT size=2 face=Arial>Stand: master vom 22.01.2016</FONT></DIV>
<DIV><FONT size=2 face=Arial>zu git: danke für die Info´s. Ich schau mir das mal 
an.</FONT></DIV>
<DIV><FONT size=2 face=Arial>zu PS: oh sorry. Ich habe die EMail zwar 'geputzt', 
aber an 'geerbte' Meta-Daten habe ich nicht gedacht. Ich wußte bis dato gar 
nicht, daß sowas bei einer Mail-Liste benutzt wird und eine Weile konnte ich mit 
der Formulierung nach 'PS.' nichts anfangen weil es keinen Sinn ergab. Beim 
nächsten Mal mache ich es besser.</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></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=cpuidle@gmail.com href="mailto:cpuidle@gmail.com">Andreas Goetz</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> Wednesday, January 27, 2016 9:12 
  AM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [vz-dev]Änderungen an 
  vzlogger zur Begutachtung</DIV>
  <DIV><BR></DIV>
  <DIV dir=ltr>
  <DIV>
  <DIV>
  <DIV>
  <DIV>
  <DIV>Hallo Herrmann,<BR><BR></DIV>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.<BR></DIV>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.<BR><BR></DIV>Viele Grüße,<BR></DIV>Andreas<BR><BR></DIV>PS.: und 
  ganz wichtig: bitte niemals auf alte Mailinglistenthemen mit "Reply" antworten 
  sondern _immer_ ein neues Thema anfangen. Sonst wirds einfach zu 
  unübersichtlich....<BR><BR></DIV>
  <DIV class=gmail_extra><BR>
  <DIV class=gmail_quote>2016-01-27 2:46 GMT+01:00 mail_web_hed007 <SPAN 
  dir=ltr><<A href="mailto:hed007@web.de" 
  target=_blank>hed007@web.de</A>></SPAN>:<BR>
  <BLOCKQUOTE class=gmail_quote 
  style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Hallo,<BR><BR>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.<BR><BR><BR>Im 
    Einzelnen:<BR><BR>'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.<BR><BR>Files: Channel.hpp, Channel.cpp, tests_mocks_Channel.hpp 
    als tests/mocks/Channel.hpp, threads.cpp<BR><BR><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.<BR><BR>Files: 
    MeterW1therm.cpp<BR><BR><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" rel=noreferrer 
    target=_blank>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" 
    rel=noreferrer target=_blank>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>   },<BR><BR>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": ""'.<BR><BR>Files: 
    Meter.cpp, MeterExec.hpp, MeterExec.cpp, MeterMap.cpp<BR><BR><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.<BR><BR><BR>tschau<BR>hermann<BR><BR></BLOCKQUOTE></DIV><BR></DIV></BLOCKQUOTE></BODY></HTML>