[OBIS V2] - Jetzt auch mit SML-Unterstützung

Begonnen von Icinger, 08 April 2016, 19:54:44

Vorheriges Thema - Nächstes Thema

gvzdus

Solar hast Du nicht? Dann geht ja vermutlich nicht viel mit S0 wegen fehlender Richtung.

Ich wäre schon gespannt, was ein guter eigener Stromzähler wäre, der vollumfänglich auslesbar ist. Bisher habe ich da den Orno OR-WE-516 oder OR-WE-517 gefunden, allerdings haben die wohl einen drahtgebundenen MODBUS-Ausgang.

Vielleicht hat jemand hier eine "Plug&Play"-Empfehlung...

sparkiie

Ich nutze neben dem Hauptzähler vom Energieversorger einen SDM630. Dieser kann über Modbus ausgelesen werden, wobei hier neben der Kabellösung auch ein ESP8266 genutzt werden könnte. Wenn mich nicht alles täuscht gibt es vom Hersteller sogar ein Wifi Modul.

sparkiie

Gibt es bzgl. der Übertragungsfehler beim Einsatz eines ESP8266 eine Lösung?
Ich nutze einen ESP um per Serial Server den IR Lesekopf auszulesen. Leider scheint es öfter zu Fehlern zu kommen, da meine Readings fast täglich mehr werden.

Könnte man hier eine Prüfung des empfangenen Streams einbauen?

cs-online

Hallo,

ich binde meinen Stromzähler auch über einen IR-Lesekopf an, der mit RX/TX an einem ESP8266 hängt. Ich habe eigentlich nicht das von dir beschriebene Problem, welche Software hast du auf dem ESP ?

Grüße Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

sparkiie

Bei mir läuft ESPEasy.
Ich lese ebenfalls über einen ESP per Serial Server die Modbus Karte eines PV Ladereglers aus - da habe ich das Problem auch nicht.

gvzdus

Major Update

Ich habe die Version mit dem neu geschriebenen Parser jetzt ins SVN eingestellt. Sie wird also morgen bei einem Update aktiv.

@sparkiie: Du könntest mal gucken, ob damit weniger Schrott in den Readings ankommt. Du hast aber nicht händisch den CRC-Check ausgebaut, oder? Eigentlich ist es schon unwahrscheinlich, dass der CRC-Check durchläuft, aber kaputte Readings erkannt werden. Dagegen könnte der neue Parser aber auch helfen.

sparkiie

Ich habe nichts ausgebaut.
Schaue mir das Ganze dann morgen mal mit dem neuen Modul an!

stefanru

Hi,

ich hatte auch falsche readings trotz CRC check mit der alten Version.

Mit der neuen Version sind keine falschen readings mehr entstanden.
Würde behaupten das ist mit der neuen Version mit gefixed worden :-)

Danke gvzdus!

Gruß,
Stefan

sparkiie

Zitat von: stefanru am 19 März 2021, 12:20:24
Hi,

ich hatte auch falsche readings trotz CRC check mit der alten Version.

Mit der neuen Version sind keine falschen readings mehr entstanden.
Würde behaupten das ist mit der neuen Version mit gefixed worden :-)

Danke gvzdus!

Gruß,
Stefan

Bei mir sieht es bis jetzt auch sauber aus!

gvzdus

Ich möchte die geneigten Leserinnen und Leser des Threads noch einmal ermutigen, einen Update von FHEM (und damit des 47_OBIS-Moduls) durchzuführen.
Am Wochenende kann ich besser reagieren, wenn es Probleme geben sollte...

Chris46

Ich habe eben das Update auf die neuste Version aus dem SVN gemacht läuft auch soweit auf den ersten Blick. Anschließend habe ich diese Empfehlung:
Zitat von: gvzdus am 12 März 2021, 18:22:33
Ausschalten! (Interval löschen, pollingMode off).
mit pollingMode off probiert. Ergebnis ist allerdings folgenden:
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:46 3: OBIS (zaehler) - Init done
2021.03.26 08:25:46 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:46 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:46 3: OBIS (zaehler) - Init done
2021.03.26 08:25:46 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:46 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:46 3: OBIS (zaehler) - Init done
2021.03.26 08:25:46 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:46 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:46 3: OBIS (zaehler) - Init done
2021.03.26 08:25:46 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:46 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:46 3: OBIS (zaehler) - Init done
2021.03.26 08:25:46 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:46 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:46 3: OBIS (zaehler) - Init done
2021.03.26 08:25:46 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:46 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:46 3: OBIS (zaehler) - Init done
2021.03.26 08:25:46 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:46 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:46 3: OBIS (zaehler) - Init done
2021.03.26 08:25:46 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:46 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:46 3: OBIS (zaehler) - Init done
2021.03.26 08:25:46 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:46 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:46 3: OBIS (zaehler) - Init done
2021.03.26 08:25:46 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:46 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:46 3: OBIS (zaehler) - Init done
2021.03.26 08:25:46 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:46 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:46 3: OBIS (zaehler) - Init done
2021.03.26 08:25:46 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:46 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:46 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)
2021.03.26 08:25:47 1: /dev/ttyUSB1 disconnected, waiting to reappear (zaehler)
2021.03.26 08:25:47 3: Setting zaehler serial parameters to 9600,8,N,1
2021.03.26 08:25:47 3: OBIS (zaehler) - Init done
2021.03.26 08:25:47 1: /dev/ttyUSB1 reappeared (zaehler)

Dann habe ich mich wieder erinnert warum ich bei der Einrichtung letztes Jahr den pollingmode auf on gesetzt habe (hat also nichts mit dem aktuellen Update zu tun). Damit funktioniert es einwandfrei. Jemand eine Idee woran das liegen könnte? Anbei noch ein List vom Device:
nternals:
   CRC_Errors 6
   DEF        /dev/ttyUSB1@9600,8,N,1 SML
   DeviceName /dev/ttyUSB1@9600,8,N,1
   FUUID      5f6dd829-f33f-ed05-f4d0-814621a84360c246
   MeterType  SML
   NAME       zaehler
   NEXT       2021-03-26 08:33:45
   NR         366
   PARTIAL   
   STATE      opened
   TYPE       OBIS

   READINGS:
     2021-03-26 08:33:38   HausverbrauchW  8017
     2021-03-26 08:33:38   HausverbrauchW_selfPV 8285.5
     2021-03-26 08:33:38   ManufID2        EFR
     2020-12-04 19:22:12   negativPower    -380
     2021-03-26 08:33:38   negativPowerkW  3.586
     2021-03-26 08:33:38   power           -3586
     2021-03-26 08:25:47   state           opened
     2021-03-26 08:33:38   total_consumption 2676841.6
     2021-03-26 08:33:38   total_consumption_Ch1 1535998.2
     2021-03-26 08:33:38   total_consumption_Ch2 1140843.4
     2021-03-26 08:33:38   total_feed      4197545.4
     2021-03-26 08:33:38   total_feed_Ch1  3484671.4
     2021-03-26 08:33:38   total_feed_Ch2  712874
   helper:
     BUFFER     
     EoM        -1
     LastPacketTime 1616744018.72764
     SPEED      5
     SPEED2     5
     TRIGGERTIME 1616744025
     Channels:
     DEVICES:
       
       5
       
     RULECACHE:
       1-0:1.8.0*255 Counter
       1-0:1.8.1*255 Counter
       1-0:1.8.2*255 Counter
       1-0:16.7.0*255 Channels
       1-0:2.8.0*255 Counter
       1-0:2.8.1*255 Counter
       1-0:2.8.2*255 Counter
       1-0:96.50.1*1 ManufID2
       255-255:255.255.255*255 unknown
     directions:
Attributes:
   alignTime  00:00:00
   event-min-interval total.*:86400
   event-on-change-reading power:10,total_consumption:10,total_consumption_Ch1:10,total_consumption_Ch2:10,total_feed:10,total_feed_Ch1:10,total_feed_Ch2:10,.*
   interval   5
   pollingMode on
   verbose    3

gvzdus

Tritt die "Hektik" auch auf, wenn sowohl interval löscht als auch pollingMode auf off setzt?
Raspbian Buster?
Könnte es einen Konflikt um den Zugriff auf das Device geben (noch ein anderes Device, dass meint, für /dev/usb.. zuständig zu sein?)

Chris46

interval löschen ändert nichts an dem Verhalten. Auch ein shutdown restart hat daran nicht verändert. OS ist Debian Buster auf einer ZBOX CI320. Ein anderes Device, welches auf /dev/ttyUSB1 zugreift habe ich nicht. Ausschließlich ein Modbus USB Stickt wird auf /dev/ttyUSB0 verwendet, dieser funktioniert mit dem 98_Modbus.pm auch einwandfrei. Wie könnte ich denn ermitteln, ob ggf. noch jemand anderes versucht auf das /dev/ttyUSB1 zuzugreifen?

gvzdus

Ich habe mal bei mir von "ser2net" (um am Produktions-Raspi *und* am Testsystem die Zählerdaten lesen zu können) auf "direkt" umgestellt - klappt bei mir super.

Die Fehlermeldung "disappeared, waiting to ..." kommt aus der DevIO-Bibliothek. Ein Grund ist z.B., wenn beim select das Vorhandensein von Daten gemeldet wird, aber dann beim tatsächlichen Lesen nichts kommt.

Ich weiß nicht, wie forschungsfreudig Du bist. Du könntest mal folgendes machen:
- Wieder polling / interval abschalten
- Auf der Shell einloggen, root werden
- PID von FHEM bestimmen
- "strace -p <pid> > strace.log 2>&1" für 10 Sekunden laufen lassen (jedenfalls so lange, dass Du einen "disappeared" im Kasten hast)

Das sieht bei mir dann so aus:
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
_newselect(120, [4 5 6 7 9 23 43 49 77 78 80 82 83 84 86 87 88 89 91 104 107 113 114], NULL, NULL, {tv_sec=1, tv_usec=912208}) = 1 (in [86], left {tv_sec=1, tv_usec=912034})
read(86, "'0\33-\16\246\372O\3162\\\331i\1", 255) = 14
_newselect(120, [4 5 6 7 9 23 43 49 77 78 80 82 83 84 86 87 88 89 91 104 107 113 114], NULL, NULL, {tv_sec=1, tv_usec=910135}) = 1 (in [86], left {tv_sec=1, tv_usec=905526})
read(86, "\1\1c\3276\0v\5\2\34\271\26b\0b\0", 255) = 16
_newselect(120, [4 5 6 7 9 23 43 49 77 78 80 82 83 84 86 87 88 89 91 104 107 113 114], NULL, NULL, {tv_sec=1, tv_usec=903762}) = 1 (in [86], left {tv_sec=1, tv_usec=889178})
read(86, "rc\2\1q\1c\340\37\0\33\33\33\33\32\0", 255) = 16
_newselect(120, [4 5 6 7 9 23 43 49 77 78 80 82 83 84 86 87 88 89 91 104 107 113 114], NULL, NULL, {tv_sec=1, tv_usec=887115}) = 1 (in [86], left {tv_sec=1, tv_usec=872835})
read(86, "]x", 255)                     = 2
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0


Hier siehst Du: In der Hauptschleife von FHEM wird select (_newselect) aufgerufen, um auf zig offenen Files auf Input zu warten. Er kommt zurück mit "Jo, auf 86 liegt was an". Das ist (bei mir) der Filedescriptor mit dem USB-Lesekopf. Anschließend wird im Modul das Read aufgerufen und die Daten ausgelesen. Und wie Du siehst, liest er tatsächlich in 16 Byte-Häppchen... (Ein Grund, warum ich die Routine für das "Vollständig?" so beschleunigen wollte).

Ich wäre jetzt neugierig, wie das bei Dir aussieht.

Chris46

Danke dir für deine Hilfe! :)

Ich habe es nach deiner Anleitung ausgeführt, im folgenden Ergebnis sollten zwei open bis disconnect enthalten sein, wenn ich das richtig sehe.
stat("/dev/ttyUSB1", {st_mode=S_IFCHR|0660, st_rdev=makedev(0xbc, 0x1), ...}) = 0
openat(AT_FDCWD, "/dev/ttyUSB1", O_RDWR|O_NOCTTY|O_NONBLOCK) = 30
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
lseek(30, 0, SEEK_CUR)                  = -1 ESPIPE (Nicht erlaubter Seek)
fstat(30, {st_mode=S_IFCHR|0660, st_rdev=makedev(0xbc, 0x1), ...}) = 0
fcntl(30, F_SETFD, FD_CLOEXEC)          = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
write(3, "2021.03.26 20:10:54 3: Setting z"..., 71) = 71
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
write(3, "2021.03.26 20:10:54 3: OBIS (zae"..., 50) = 50
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
write(3, "2021.03.26 20:10:54 1: /dev/ttyU"..., 57) = 57
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
select(40, [4 5 6 7 8 9 12 13 19 20 21 22 23 24 25 26 28 29 30 31 33], [21 28], NULL, {tv_sec=0, tv_usec=20175}) = 4 (in [13 30], out [21 28], left {tv_sec=0, tv_usec=20141})
read(30, "\\\1c\16\241\0v\5\2\211\236\"b\0b\0rc\7\1w\7\377\377\377\377\377", 255) = 27
read(30, "", 255)                       = 0
select(32, [30], NULL, NULL, {tv_sec=0, tv_usec=10000}) = 0 (Timeout)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
write(3, "2021.03.26 20:10:54 1: /dev/ttyU"..., 80) = 80
ioctl(30, TCFLSH, TCIOFLUSH)            = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(30, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
close(30)                               = 0
close(30)                               = -1 EBADF (Ungültiger Dateideskriptor)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
read(13, "GET /fhem?XHR=1&cmd=%7Bint%28Rea"..., 1024) = 160
stat("./www/pgm2/dark.js", 0x55bacacd34e8) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
write(21, "\27\3\3\1\f\347(_\202~\245X\rw\317)\"R\215\347\240\17\340W38^J\351svl"..., 273) = 273
write(28, "\27\3\3\1\fz\376\273z\302\303\241j\24\231\277*\352b\205P\263\265\216$ \370\4\371p\350@"..., 273) = 273
select(40, [4 5 6 7 8 9 12 13 19 20 21 22 23 24 25 26 28 29 31 33], [13], NULL, {tv_sec=0, tv_usec=26680}) = 1 (out [13], left {tv_sec=0, tv_usec=26637})
write(13, "HTTP/1.1 200 OK\r\nContent-Length:"..., 135) = 135
close(13)                               = 0
stat("/dev/ttyUSB1", {st_mode=S_IFCHR|0660, st_rdev=makedev(0xbc, 0x1), ...}) = 0
openat(AT_FDCWD, "/dev/ttyUSB1", O_RDWR|O_NOCTTY|O_NONBLOCK) = 13
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
lseek(13, 0, SEEK_CUR)                  = -1 ESPIPE (Nicht erlaubter Seek)
fstat(13, {st_mode=S_IFCHR|0660, st_rdev=makedev(0xbc, 0x1), ...}) = 0
fcntl(13, F_SETFD, FD_CLOEXEC)          = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
write(3, "2021.03.26 20:10:54 3: Setting z"..., 71) = 71
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
write(3, "2021.03.26 20:10:54 3: OBIS (zae"..., 50) = 50
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
write(3, "2021.03.26 20:10:54 1: /dev/ttyU"..., 57) = 57
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
select(40, [4 5 6 7 8 9 12 13 19 20 21 22 23 24 25 26 28 29 31 33], [21 28], NULL, {tv_sec=0, tv_usec=4673}) = 3 (in [13], out [21 28], left {tv_sec=0, tv_usec=4635})
read(13, "\1\1\1\1\1\4EFR\1w", 255)     = 11
read(13, "", 255)                       = 0
select(16, [13], NULL, NULL, {tv_sec=0, tv_usec=10000}) = 1 (in [13], left {tv_sec=0, tv_usec=4358})
read(13, "\7\1\0`\1\0\377\1\1\1\1\v\n\1E", 255) = 15
write(28, "\27\3\3\0\211z\376\273z\302\303\241k\317/IP\315U\201I\255\206[|\t\27#x\320^\314"..., 142) = 142
write(21, "\27\3\3\0\211\347(_\202~\245X\16\234\216\367}\327\300\2\237\354\347\2366\243\2411Y\220\231\t"..., 142) = 142
write(4, "\1\3~2\0\17\274)", 8)         = 8
select(0, NULL, NULL, NULL, {tv_sec=0, tv_usec=1000}) = 0 (Timeout)
select(40, [4 5 6 7 8 9 12 13 19 20 21 22 23 24 25 26 28 29 31 33], NULL, NULL, {tv_sec=0, tv_usec=317641}) = 1 (in [13], left {tv_sec=0, tv_usec=308870})
read(13, "FR \3\262\2520\1w\7\1\0\1\10\0", 255) = 15
read(13, "", 255)                       = 0
select(16, [13], NULL, NULL, {tv_sec=0, tv_usec=10000}) = 0 (Timeout)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
write(3, "2021.03.26 20:10:54 1: /dev/ttyU"..., 80) = 80
ioctl(13, TCFLSH, TCIOFLUSH)            = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, SNDCTL_TMR_START or TCSETS, {B9600 -opost -isig -icanon -echo ...}) = 0
ioctl(13, TCGETS, {B9600 -opost -isig -icanon -echo ...}) = 0
close(13)                               = 0
close(13)                               = -1 EBADF (Ungültiger Dateideskriptor)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
select(40, [4 5 6 7 8 9 12 19 20 21 22 23 24 25 26 28 29 31 33], [21 28], NULL, {tv_sec=0, tv_usec=272319}) = 2 (out [21 28], left {tv_sec=0, tv_usec=272270})
write(28, "\27\3\3\0\233z\376\273z\302\303\241l\221\252\362@\3136|e\27\242\336\344\314K\6\253!\224\277"..., 160) = 160
write(21, "\27\3\3\0\233\347(_\202~\245X\17\216\371\36\253Y_iO\23&\34qg\363+>\23\17\330"..., 160) = 160