Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:edl-ehz_unknown

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
howto:edl-ehz_unknown [2018/03/21 19:42] – Syntax jauhowto:edl-ehz_unknown [2024/03/08 08:00] (aktuell) – [Push SML] Falscher Port jau
Zeile 1: Zeile 1:
-<note important>FIXME Work in Progress</note> 
 ====== Unbekannten eHz mit vzlogger in Betrieb nehmen ====== ====== Unbekannten eHz mit vzlogger in Betrieb nehmen ======
  
Zeile 18: Zeile 17:
   * [[howto/raspberry_pi_image|RasperryPi Image]] in Betrieb nehmen oder [[software/controller/vzlogger/installation_cpp-version|vzlogger installieren]].   * [[howto/raspberry_pi_image|RasperryPi Image]] in Betrieb nehmen oder [[software/controller/vzlogger/installation_cpp-version|vzlogger installieren]].
   * Sicherstellen das vzlogger nicht als Dienst im Hintergrund läuft <code>sudo systemctl stop vzlogger</code>   * Sicherstellen das vzlogger nicht als Dienst im Hintergrund läuft <code>sudo systemctl stop vzlogger</code>
-  * Möglicherweise vorhandenes Logfile löschen <code>sudo rm /var/log/vzlogger.log</code> 
  
 ===== Tests ===== ===== Tests =====
-Vzlogger hat fast alle nötigen Tools eingebaut die nötig sind um heraus zu finden wie man mit dem Zähler Daten austauscht. Dazu nutzen wir verschiedene Minimalkonfigurationen und die Logfiles die dabei generiert werden. Im Grunde nach dem Prinzip "Try and Error".+Vzlogger hat fast alle Tools eingebaut die nötig sind um heraus zu finden wie man mit dem Zähler Daten austauscht. Dazu nutzen wir verschiedene Minimalkonfigurationen und die Logfiles die dabei generiert werden. Im Grunde verfahren wir im Folgenden nach dem Prinzip "Try and Error".
  
 ==== erster Versuch ==== ==== erster Versuch ====
-Als erstes prüfen wir ob der Zähler PUSH oder PULL kommunziert.\\+Als erstes prüfen wir ob der Zähler PUSH oder PULL kommuniziert.\\
 Erstelle ''/home/pi/1_push_d0.conf'' mit folgendem Inhalt: Erstelle ''/home/pi/1_push_d0.conf'' mit folgendem Inhalt:
 <code base 1_min_d0.conf> <code base 1_min_d0.conf>
 { {
   "retry": 0,   "retry": 0,
-  "daemon": false, 
   "verbosity": 15,   "verbosity": 15,
   "log": "/home/pi/1_push_d0.log",   "log": "/home/pi/1_push_d0.log",
   "local": {   "local": {
     "enabled": false,     "enabled": false,
-    "port": 8080,+    "port": 8081,
     "index": false,     "index": false,
     "timeout": 0,     "timeout": 0,
Zeile 55: Zeile 52:
 Führe vzlogger aus Führe vzlogger aus
 <code> vzlogger -c ~/1_push_d0.conf </code> <code> vzlogger -c ~/1_push_d0.conf </code>
 +Der vzlogger wird den meisten Teil seiner Arbeit im Hintergrund verrichten. Timeout ist auf 60 Sekunden konfiguriert, entsprechend lange wird es dauern bis vzlogger beendet wird. Ob er noch arbeitet findet man mit dem Befehl
 +<code>ps -A | grep vzlogger</code>
 +heraus. Keine Ausgabe beutet vzlogger wurde bereits beendet.\\
 +Sehen wir uns das logfile an:
 +<code>cat 1_push_d0.log</code>
 Achte auf Fehlermeldungen wie z.B. ''Cannot open logfile'', ''Permission denied'' oder ''open(/dev/lesekopf0): No such file or directory''. Bevor die nicht behoben sind geht es nicht weiter.\\ Achte auf Fehlermeldungen wie z.B. ''Cannot open logfile'', ''Permission denied'' oder ''open(/dev/lesekopf0): No such file or directory''. Bevor die nicht behoben sind geht es nicht weiter.\\
-Timeout ist auf 60 Sekunden konfiguriert, entsprechend lange kann es dauern bis vzlogger beendet wird. Ist das nicht der Fall mit den Tasten ''Strg'' und ''C'' abbrechen.\\ +War der Test erfolgreich wird dort sehr wahrscheinlich eine Meldung ''Got 0 new readings from meter:'' ausgeben. Das war zu erwarten und nicht weiter tragisch. Sehen wir uns das dumpfile an:
-Läuft vzlogger durch wird er sehr wahrscheinlich eine Meldung ''Got 0 new readings from meter:'' ausgeben. Das war zu erwarten und nicht weiter tragisch. Sehen wir uns das dumpfile an:+
 <code>cat 1_push_d0.txt</code> <code>cat 1_push_d0.txt</code>
-Wir suchen nach Zeilen die mit ''>>>>> '' beginnen. +Wir suchen nach Zeilen die mit ''>>>>'' beginnen. 
-  * Ist keine solche Zeile vorhanden bei [[howto/edl-ehz_unknown#pull_d0]] fortfahren.+  * Ist keine solche Zeile vorhanden bei [[howto/edl-ehz_unknown#pull_d0|Pull d0]] fortfahren.
   * Ist mindestens eine vorhanden suchen wir links nach der Zeichenfolge ''1b 1b 1b 1b'' //SML// oder rechts nach lesbarem Text ''1.8.0'' //D0//.\\   * Ist mindestens eine vorhanden suchen wir links nach der Zeichenfolge ''1b 1b 1b 1b'' //SML// oder rechts nach lesbarem Text ''1.8.0'' //D0//.\\
 Sehr wahrscheinlich wird da aber nur Käse stehen. z.B. Sehr wahrscheinlich wird da aber nur Käse stehen. z.B.
-<code>>>>>> 91.950464000s (   903 ms)+<code> 
 +[...] 
 +>>>>> 91.950464000s (   903 ms)
 4b 23 2a 50 0a 28 3c 52 7f 52 7f 23 42 02 00 40   K#*P (<R R #B  @ 4b 23 2a 50 0a 28 3c 52 7f 52 7f 23 42 02 00 40   K#*P (<R R #B  @
 52 0f 53 7f 08 00 40 22 31 40 40 24 00 06 40 00   R S   @"1@@$  @ 52 0f 53 7f 08 00 40 22 31 40 40 24 00 06 40 00   R S   @"1@@$  @
Zeile 72: Zeile 75:
 40 0a 0b 10 42 0e 53 7f 23 4a 40 22 30 23 4a 02     B S #J@"0#J 40 0a 0b 10 42 0e 53 7f 23 4a 40 22 30 23 4a 02     B S #J@"0#J
 00 6b 4b 00                                        kK 00 6b 4b 00                                        kK
 +[...]
 </code> </code>
-In dem Fall Wissen das der Zähler PUSH kommuniziert, aber die Schnittstelle noch nicht passt. Bei [[howto/edl-ehz_unknown#push_d0]] fortfahren.+In dem Fall ist klar das der Zähler PUSH kommuniziert, aber die Schnittstelle noch nicht passt. Bei [[howto/edl-ehz_unknown#push_d0|Push d0]] fortfahren.
  
 ==== Pull d0 ==== ==== Pull d0 ====
Zeile 86: Zeile 90:
   "local": {   "local": {
     "enabled": false,     "enabled": false,
-    "port": 8080,+    "port": 8081,
     "index": false,     "index": false,
     "timeout": 0,     "timeout": 0,
Zeile 134: Zeile 138:
 30 30 30 2a 6b 57 68 29 0d 0a 31 2e 38 2e 32 28   000*kWh)  1.8.2(  30 30 30 2a 6b 57 68 29 0d 0a 31 2e 38 2e 32 28   000*kWh)  1.8.2( 
 30 30 30 30 33 35 2e 33 39 30 2a 6b 57 68 29 0d   000035.390*kWh)   30 30 30 30 33 35 2e 33 39 30 2a 6b 57 68 29 0d   000035.390*kWh)  
-0a 32 2e 38 2e 31 28 30 30 30 30 30 30 2e 30 30    2.8.1(000000.00  +[...]
-30 2a 6b 57 68 29 0d 0a 32 2e 38 2e 32 28 30 30   0*kWh)  2.8.2(00  +
-30 35 35 35 2e 32 32 32 2a 6b 57 68 29 0d 0a 31   0555.222*kWh)  1  +
-2e 38 2e 30 28 30 30 30 30 33 35 2e 33 39 30 2a   .8.0(000035.390*  +
-6b 57 68 29 0d 0a 32 2e 38 2e 30 28 30 30 30 35   kWh)  2.8.0(0005  +
-35 35 2e 32 32 32 2a 6b 57 68 29 0d 0a 31 35 2e   55.222*kWh)  15.  +
-38 2e 30 28 30 30 30 35 39 30 2e 36 31 33 2a 6b   8.0(000590.613*k  +
-57 68 29 0d 0a 43 2e 37 2e 30 28 30 30 30 35 29   Wh)  C.7.0(0005)  +
-0d 0a 33 32 2e 37 28 32 33 30 2a 56 29 0d 0a 35     32.7(230*V)  5  +
-32 2e 37 28 32 32 39 2a 56 29 0d 0a 37 32 2e 37   2.7(229*V)  72.7  +
-28 32 33 33 2a 56 29 0d 0a 33 31 2e 37 28 30 30   (233*V)  31.7(00  +
-2e 37 36 38 2a 41 29 0d 0a 35 31 2e 37 28 30 30   .768*A)  51.7(00  +
-2e 36 32 32 2a 41 29 0d 0a 37 31 2e 37 28 30 30   .622*A)  71.7(00  +
-2e 38 36 31 2a 41 29 0d 0a 38 32 2e 38 2e 31 28   .861*A)  82.8.1(  +
-30 30 30 34 29 0d 0a 38 32 2e 38 2e 32 28 30 30   0004)  82.8.2(00  +
-30 30 29 0d 0a 30 2e 32 2e 30 28 4d 32 37 29 0d   00)  0.2.0(M27)   +
-0a 43 2e 35 2e 30 28 30 36 32 31 29 0d 0a 21       C.5.0(0621)  !  +
  
 ##### 55.268535000s (  1353 ms) closed ##### 55.268535000s (  1353 ms) closed
 </code> </code>
-wäre perfektin der Liste sind alle [[software/obis|OBIS-Codes]] enthalten die der jeweilige Zähler bereit stellt. Wir können [[howto/edl-ehz_unknown#channel_einrichten]].+wäre ein voller Erfolg. Der Zähler hat geantwortet und vzlogger automatisch die Baudrate angepasst.\\ 
 +Schauen wir mal im Log was uns wirklich interessiert: 
 +<code> 
 +cat /home/pi/2_pull_d0.log | grep Parsed 
 +</code> 
 +<code> 
 +[Mar 21 16:23:15][d0]   Parsed reading (OBIS code=1-0:0.0.0*255value=331210-5032451, unit=) 
 +[Mar 21 16:23:15][d0]   Parsed reading (OBIS code=1-0:1.8.1*255, value=036167.6779, unit=) 
 +[...] 
 +</code> 
 +In der Liste sind alle [[software/obis|OBIS-Codes]] enthalten die der jeweilige Zähler bereit stellt. Weiter mit [[howto/edl-ehz_unknown?do=edit#obis_identifizieren|OBIS identifizieren]].
  
 ==== Push d0 ==== ==== Push d0 ====
-Wir tasten uns nun an die Geschwindkeit der Schnittstelle heran. Sehr weit verbreitet sind 9600baud.+Wir tasten uns nun an die Geschwindigkeit der Schnittstelle heran. Sehr weit verbreitet sind 9600baud.
 Erstelle ''/home/pi/2_push_d0.conf'' mit folgendem Inhalt: Erstelle ''/home/pi/2_push_d0.conf'' mit folgendem Inhalt:
 <code base 2_push_d0.conf> <code base 2_push_d0.conf>
Zeile 167: Zeile 165:
   "local": {   "local": {
     "enabled": false,     "enabled": false,
-    "port": 8080,+    "port": 8081,
     "index": false,     "index": false,
     "timeout": 0,     "timeout": 0,
Zeile 191: Zeile 189:
 <code>cat 2_push_d0.txt</code> <code>cat 2_push_d0.txt</code>
 Wir suchen wieder links nach der Zeichenfolge ''1b 1b 1b 1b'' //SML// oder rechts nach lesbarem Text ''1.8.0''. Wir suchen wieder links nach der Zeichenfolge ''1b 1b 1b 1b'' //SML// oder rechts nach lesbarem Text ''1.8.0''.
-  * ''1b'' wäre [[faq#woher_weiss_ich_ob_mein_zaehler_das_protokoll_sml_oder_das_protokoll_d0_oder_din-en_62056-21_spricht|SML]] und wir können bei [[howto/edl-ehz_unknown#push_sml]] fortfahren. +  * ''1b'' wäre [[/faq#woher_weiss_ich_ob_mein_zaehler_das_protokoll_sml_oder_das_protokoll_d0_oder_din-en_62056-21_spricht|SML]] und wir können bei [[howto/edl-ehz_unknown#push_sml|Push SML]] fortfahren. 
-  * ''1.8.0'' ist [[faq#woher_weiss_ich_ob_mein_zaehler_das_protokoll_sml_oder_das_protokoll_d0_oder_din-en_62056-21_spricht|d0]], in der Liste sind alle [[software/obis|OBIS-Codes]] enthalten die der jeweilige Zähler bereit stellt. Wir können [[howto/edl-ehz_unknown#channel_einrichten]].+  * ''1.8.0'' ist [[/faq#woher_weiss_ich_ob_mein_zaehler_das_protokoll_sml_oder_das_protokoll_d0_oder_din-en_62056-21_spricht|d0]], in der Liste sind alle [[software/obis|OBIS-Codes]] enthalten die der jeweilige Zähler bereit stellt. Weiter mit [[howto/edl-ehz_unknown?do=edit#obis_identifizieren|OBIS identifizieren]]
 +  * Ist das Ergebnis uneindeutig das [[hardware:controllers:ir-schreib-lesekopf#grundlagen|Frameformat]] auf ''"parity": "8n1",'' ändern. Dann wird wahrscheinlich ''1b 1b 1b 1b'' erscheinen, in dem Fall bei [[howto/edl-ehz_unknown#push_sml|Push SML]] fortfahren.
  
 ==== Push SML ==== ==== Push SML ====
Zeile 205: Zeile 204:
   "local": {   "local": {
     "enabled": false,     "enabled": false,
-    "port": 8080,+    "port": 8081,
     "index": false,     "index": false,
     "timeout": 0,     "timeout": 0,
Zeile 225: Zeile 224:
 Führe vzlogger aus Führe vzlogger aus
 <code> vzlogger -c ~/3_push_sml.conf </code> <code> vzlogger -c ~/3_push_sml.conf </code>
-Die Ausgabe an der Konsole (bzw. in /home/3_push_sml.log) könnte so in etwa aussehen:+Die Ausgabe im Log (''cat /home/pi/3_push_sml.log'') könnte teilweise so aussehen:
 <code> <code>
-[Mar 21 19:02:11][mtr0] Got 7 new readings from meter:+[...]
 [Mar 21 19:02:11][mtr0] Reading: id=1-0:1.8.0*255/ObisIdentifier:1-0:1.8.0*255 value=5148283.40 ts=1521655331149 [Mar 21 19:02:11][mtr0] Reading: id=1-0:1.8.0*255/ObisIdentifier:1-0:1.8.0*255 value=5148283.40 ts=1521655331149
 [Mar 21 19:02:11][mtr0] Reading: id=1-0:2.8.0*255/ObisIdentifier:1-0:2.8.0*255 value=45620365.80 ts=1521655331149 [Mar 21 19:02:11][mtr0] Reading: id=1-0:2.8.0*255/ObisIdentifier:1-0:2.8.0*255 value=45620365.80 ts=1521655331149
Zeile 235: Zeile 234:
 [Mar 21 19:02:11][mtr0] Reading: id=1-0:2.8.2*255/ObisIdentifier:1-0:2.8.2*255 value=0.00 ts=1521655331149 [Mar 21 19:02:11][mtr0] Reading: id=1-0:2.8.2*255/ObisIdentifier:1-0:2.8.2*255 value=0.00 ts=1521655331149
 [Mar 21 19:02:11][mtr0] Reading: id=1-0:16.7.0*255/ObisIdentifier:1-0:16.7.0*255 value=185.80 ts=1521655331149 [Mar 21 19:02:11][mtr0] Reading: id=1-0:16.7.0*255/ObisIdentifier:1-0:16.7.0*255 value=185.80 ts=1521655331149
-[Mar 21 19:02:11][mtr0] Stopped reading+[...]
 </code> </code>
-In der Liste sind alle [[software/obis|OBIS-Codes]] enthalten die der jeweilige Zähler bereit stellt. Wir können [[howto/edl-ehz_unknown#channel_einrichten]].+In der Liste sind alle [[software/obis|OBIS-Codes]] enthalten die der jeweilige Zähler bereit stellt. Weiter mit [[howto/edl-ehz_unknown?do=edit#obis_identifizieren|OBIS identifizieren]]
 + 
 +===== OBIS identifizieren ===== 
 +Wir haben nun also ein Liste mit Werten die unser Zähler ausgibt die so 
 +<code> 
 +[Mar 21 16:23:15][d0]   Parsed reading (OBIS code=1-0:0.0.0*255, value=331210-5032451, unit=) 
 +[Mar 21 16:23:15][d0]   Parsed reading (OBIS code=1-0:1.8.1*255, value=036167.6779, unit=) 
 +[...] 
 +</code> 
 +oder so 
 +<code> 
 +[...] 
 +[Mar 21 19:02:11][mtr0] Reading: id=1-0:1.8.0*255/ObisIdentifier:1-0:1.8.0*255 value=5148283.40 ts=1521655331149 
 +[Mar 21 19:02:11][mtr0] Reading: id=1-0:2.8.0*255/ObisIdentifier:1-0:2.8.0*255 value=45620365.80 ts=1521655331149 
 +[Mar 21 19:02:11][mtr0] Reading: id=1-0:1.8.1*255/ObisIdentifier:1-0:1.8.1*255 value=5148283.40 ts=1521655331149 
 +[...] 
 +</code> 
 +{{ :software:obis.jpg|}} 
 +ausschaut. Der Dreierblock vor dem Stern (z.B. ''1.8.0*'') nennt uns Messgröße.Messart.Tarif*.\\ 
 + 
 +Viele der Schlüssel die ein Zähler ausgibt interessieren uns aber nicht, wir brauchen keine Seriennummern oder Lastgänge. Wichtig ist erstmal ob es sich um einen Ein- oder Zweirichtungszähler handelt. Dementsprechend wird nur Wirkleistung Bezug (1.x.x) oder zusätzlich Wirkleistung Lieferung (2.x.x) ausgegeben.\\ 
 +Es ist auch nicht ungewöhnlich das ein Zähler OBIS Codes ausgibt die gar nicht in Gebrauch sind, zu erkenne sind sie daran das der Wert (value=) sich nicht verändert. Die meisten Zähler listen z.B. zwei Tarife (x.x.1 und x.x.2), gezählt wird aber nur einer. Für Volkszähler ist der Gesamtwert (x.x.0) am ehesten zu gebrauchen.\\ 
 + 
 +=== Leistung === 
 +Im Volkszähler Frontend macht es, grundsätzlich, keinen Unterschied ob ein Kanal als Aktualwert (x.7.x) oder Zählerstand (x.8.x) geloggt wird. Graph und Tabelle enthalten die selben Informationen.\\ 
 + 
 +Es gibt allerdings Fälle in denen nur ein grob aufgelöster Zählerstand ausgegeben wird und auch nach [[/faq#mein_eh-zaehler_gibt_nur_volle_kwh_aus|Freischaltung]] nicht besser wird, da kann es zweckmäßig sein auch die Leistung zu loggen. 
 + 
 +=== Strom und Spannung === 
 +Strom (51.7.x) und Spannung (52.7.x) können für kürzere Zeiträume interessant sein. Z.B. im Zuge einer Diskussionen und Fehlersuche mit Geräteherstellern oder Netzbetreibern.
  
 ===== Channel einrichten ===== ===== Channel einrichten =====
 +Da wir nun wissen was der Zähler für Daten bereit stellt können wir die nötigen Kanäle  [[/software/middleware/einrichtung|übers Frontend anlegen]]. Dabei ist wichtig den Typ passend zu den Daten auszuwählen. Die Middleware wird dem neuen Kanal eine [[https://de.wikipedia.org/wiki/Universally_Unique_Identifier|UUID]] zuweisen. Sie sollte notiert werden, wird im nächsten Schritt nämlich noch benötigt.
 +
 +===== vzlogger.conf erstellen =====
 +Als Ausgangsbasis nehmen wir die Konfiguration mit welcher der Zähler erfolgreich gelesen wurde. Exemplarisch hier die aus [[howto/edl-ehz_unknown#push_sml|Push SML]] für einen Zweirichtungszähler. Die Unterschiede sollen zeigen wo die Kanäle einzufügen sind. Auf korrekte Klammern und Komma achten!\\
 +
 +UUID und OBIS-Code den bereits ausgewählten und eingerichteten Kanälen entsprechend in die Konfiguration übernehmen.\\
 +
 +Das ist auch ein guter Moment das Logfile auf Standard umzustellen.\\
 +
 +<code base vzlogger.conf>
 +{
 +  "retry": 0,
 +  "verbosity": 15,
 +  "log": "/var/log/vzlogger/vzlogger.log",
 +  "local": {
 +    "enabled": false,
 +    "port": 8081,
 +    "index": false,
 +    "timeout": 0,
 +    "buffer": 0
 +  },
 +  "meters": [
 +    {
 +      "enabled": true,
 +      "allowskip": false,
 +      "protocol": "sml",
 +      "device": "/dev/lesekopf0",
 +      "baudrate": 9600,
 +      "parity": "8n1",
 +      "read_timeout": 60,
 +      "channels": [{
 +        "uuid" : "6836dd20-00d5-11e0-bab1-856ed5f959ae",
 +        "middleware" : "http://localhost/middleware.php",
 +        "identifier" : "1-0:1.8.0"
 +        },{
 +        "uuid" : "6836dd10-00d5-11e0-bab1-856ed5f959ae",
 +        "middleware" : "http://localhost/middleware.php",
 +        "identifier" : "1-0:2.8.0"
 +      }]
 +    }
 +  ]
 +}
 +</code>
 +
 +Vzlogger wird nun nicht in der Konsole sondern als Hintergrunddienst gestartet:
 +<code>sudo systemctl start vzlogger</code>
 +
 +Es sollten zeitnah Graphen im Frontend dargestellt werden. Ist das nicht der Fall das Logfile auf Fehlermeldungen prüfen.
 +<code>cat /var/log/vzlogger/vzlogger.log</code>
 +Bei Fragen oder Problemen wende dich an [[/contact|Mailingliste oder Forum]]. Am schnellsten kann dir geholfen werden wenn du Konfiguration und Logfile gleich mit anhängst.\\
 +
 +===== Abschlusss =====
 +
 +Falls alles wie am Schnürchen läuft sollte das Loglevel noch reduziert werden. Dazu in der Konfiguration diese Zeile anpassen:
 +<code>  "verbosity": 0,</code>
 +
 +Um die Änderung zu übernehmen den vzlogger neu starten:
 +<code>sudo systemctl stop vzlogger
 +sudo systemctl start vzlogger</code>
 +
 +Besonders freuen wir uns wenn du auch bei erfolgfreicher Einrichtung deines Zähler kurze Rückmeldung gibst. Vielleicht sogar indem du selbst eine Wikiseite zu deinem Zähler erstellst?
howto/edl-ehz_unknown.1521657734.txt.gz · Zuletzt geändert: 2018/03/21 19:42 von jau