Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS: SML-Reader

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Im LBS gibt es die folgende Zeile:
    Code:
     system("stty -F {$this->serialPort} {$this->baudrate} cs8 ignbrk -brkint -imaxbel -opost [B][COLOR=#c0392b]-onlcr[/COLOR][/B] -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts > /dev/nulli 2>&1");
    Ich befürchte, dass die Option -onlcr nicht ausreicht - sie sollte dafür sorgen, dass NL a.k.a. LF (0x0A) nicht in CR (0x0D) umgewandelt. Wir haben hier aber mit dem umgekehrten Fall zu tun. D.h. es fehlt noch die Option -ocrnl.

    Kommentar


      hört sich plausibel an. Ich untersuche mal den alten "Glitch" ob es da auch 0A / OD war.
      Zuletzt geändert von Ing-Dom; 21.02.2020, 22:33.
      OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

      Kommentar


        der nächste "Glitch":

        2020-03-01 10_13_58-EDOMI · Visualisierung.png

        von:
        5118356 / 03 0C FF C8
        auf:
        5098710 / 03 0A 00 5C‬

        Dabei hab ich den LBS geändert und -ocrnl hinzugefügt.

        Code:
        system("stty -F {$this->serialPort} {$this->baudrate} cs8 ignbrk -brkint -imaxbel -opost -onlcr -ocrnl -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts > /dev/nulli 2>&1");
        wahrscheinlich sind die onlcr und ocrnl beide falsch. Weil es its ja input und nicht output. Also:
        -inlcr -icrnl
        Angehängte Dateien
        Zuletzt geändert von Ing-Dom; 01.03.2020, 11:43.
        OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

        Kommentar


          Jawohl, -inlcr -icrnl habens nun wirklich gebracht.

          Vorher:

          2020-03-01 13_53_20-Microsoft Excel - archivKoData-1.csv [Schreibgeschützt].png

          Nachher:
          2020-03-01 13_52_55-.png
          OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

          Kommentar


            Zitat von Lapheus Beitrag anzeigen
            Hallo zusammen,

            mein Zähler funktioniert ganz wunderbar mit dem Baustein. Läuft jetzt per Socat Verbindung auf einem Raspi, der beim Zähler sitzt.

            Da der Zähler aber ca. alle zwei bis drei Sekunden(!) seine Werte sendet wird jedes mal eine Berechnungskette in Gang gesetzt.
            Ich möchte das etwas Zähmen und den Zähler nur Minütlich oder alle fünf Minuten abfragen. Also brauch ich "etwas" das mir im Minuten Takt eine 1/0 generiert, für den Enable Eingang?
            Bin auch für andere Ideen offen.
            Hi,
            kann mir jemand erklären, wie ich das auch hinbekomme mit der Socat Verbindung?
            Ein USB Lesekopf ist am Raspberry und liefert auch binäre Daten.
            Vielen Dank

            Kommentar


              Achso, was die Sache womöglich noch kompliziert, Edomi läuft bei mir im Docker Container

              Kommentar


                Hallo Willi,

                hatte Deine PN gesehen, komme erst jetzt dazu Dir zu antworten, Sorry!
                Denke hier im Forum passt es besser, da haben dann alle etwas davon.

                Auf dem Raspberry Pi:

                Datei erstellen /lib/systemd/system/socat.service mit folgendem Inhalt
                Code:
                [Unit]
                Description=IR-Lesekopf per Socat
                
                [Service]
                ExecStart=/usr/bin/socat -U tcp4-listen:4000,fork,reuseaddr File:/dev/ttyUSB0,b9600,raw
                Restart=on-failure
                
                [Install]
                WantedBy=multi-user.target
                Dann ein
                Code:
                sudo systemctl enable socat
                sudo systemctl start socat

                Auf dem Edomi Server:

                Datei erstellen /usr/lib/systemd/system/socat.service mit folgendem Inhalt:

                Code:
                [Unit]
                Description=IR-Lesekopf per Socat
                
                [Service]
                ExecStart=/usr/bin/socat -U pty,link=/dev/virtUSB0,echo=0,wait-slave TCP:192.168.35.250:4000,retry=5
                Restart=on-failure
                
                [Install]
                WantedBy=multi-user.target
                Dann ein

                Code:
                systemctl enable socat
                systemctl start socat
                Die Dockerfraktion muss Dir beim durchleiten des Ports 4000 in den Docker Container helfen.
                Diese Verbindung läuft bei mir nur in eine Richtung, daher die Angabe socat -U. Wer dem Zähler irgendwelche Werte schicken muss, z. B. zum initalisieren, der muss das weglassen.
                Im Edomi Baustein wird dann das Device /dev/virtUSB0 angegeben.
                So läuft das bei mir jetzt schon drei Monate.

                Viel Erfolg

                Theoretisch dürfte das auch mit einem Moxa oder ähnlichem statt des RaspberryPis laufen...
                Zuletzt geändert von Lapheus; 25.03.2020, 08:01. Grund: Dienst starten eingetragen
                Gruß
                Lapheus

                Kommentar


                  Hallo nochmal,

                  auf dem Raspberry hat alles geklappt. Auf dem Edomi Docker Server jedoch nicht. Scheinbar ist Socat nicht installiert. Fehlermeldung:
                  systemctl enable socat
                  -bash: systemctl: command not found

                  Wie ich das schaffen? Finde keine brauchbare Anleitung.
                  Was mache ich falsch?

                  Vielen Dank

                  Kommentar


                    Also, mittlerweile habe ich Socat installieren können. Da es noch CentOS 6.5 ist, ging das nur über repo. Auch die Verzeichnisse und Dateinamen für den Socat Service musste ich anpassen. Nur wenn ich jetzt den Service starte, kommt folgende Fehlermeldung:

                    etc/init.d/socat: line 5: pty,link=/dev/virtUSB0,echo=0,wait-slave: No such file or directory

                    Und nun?

                    Kommentar


                      Hi nochmal,
                      bin mittlerweile weiter, habe Socat jetzt auf dem Docker Host installiert und den virtuellen USB Port in den Container durchgereicht. Letzteres hat auf jeden Fall funktioniert.
                      Im LBS erhalte ich jetzt jedoch folgende Fehlermeldung:
                      2020-03-30 20:16:18 508950 ? 1280 Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000350.php | Fehlercode: 2 | Zeile: 315 | fopen(/dev/ttyUSBV): failed to open stream: Input/output error ERROR
                      2020-03-30 20:16:18 509327 ? 1280 Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000350.php | Fehlercode: 2 | Zeile: 316 | stream_set_blocking() expects parameter 1 to be resource, boolean given ERROR
                      2020-03-30 20:16:28 519979 ? 1280 Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000350.php | Fehlercode: 2 | Zeile: 383 | fclose() expects parameter 1 to be resource, boolean given
                      Kann mir jemand helfen?

                      LG Willi

                      Kommentar


                        Zusatzinfo:
                        cat /dev/ttyUSBV | od -tx1 auf dem Docker liefert input/output error

                        Auf dem Docker Host läuft es. Also scheint Socat zu funktionieren

                        Kommentar


                          toggle
                          Wäre es vielleicht möglich, den LBS um einige Ausgänge zu erweitern?
                          Mein derzeitiger Zähler (Holley DTZ541) spuckt laut Log in etwa folgende Daten aus:
                          Code:
                           [TABLE="class: log, border: 0, cellpadding: 0, cellspacing: 0, width: 0, height: 12"]
                           	 		[TR]
                           			[TD] [/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:1.8.0*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:2.8.0*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:16.7.0*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:32.7.0*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:52.7.0*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:72.7.0*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:31.7.0*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:51.7.0*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:71.7.0*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:81.7.1*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:81.7.2*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:81.7.4*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:81.7.15*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:81.7.26*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:14.7.0*255[/TD]
                           		[/TR]
                           		[TR]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD] [/TD]
                           			[TD]OBIS 1-0:96.5.0*255[/TD]
                           		[/TR]
                           	 [/TABLE]
                          Da weiß ich gar nicht für was ich mich entscheiden soll...

                          Außerdem ist mir beim entsprechenden LBS für die D0-Schnittstelle aufgefallen, dass es dort die Möglichkeit gibt noch ein paar gerätespezifische Daten (Herstellerkennung usw.) zu erhalten. Diese werden vom LBS direkt als Klartext ausgegeben. Ist das mit SML auch irgendwie möglich bzw. vorgesehen?
                          Gruß -mfd-
                          KNX-UF-IconSet since 2011

                          Kommentar


                            Im Schnitt einmal pro Tag taucht hier folgender Fehler auf:
                            Code:
                            Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000350.php | Fehlercode: 2 | Zeile: 176 | Illegal offset type in isset or empty
                            Ich vermute, dass ein Datenpaket nicht richtig/vollständig gelesen wird...
                            Gibt es softwareseitig etwas das man dagegen unternehmen kann?

                            Gruß -mfd-
                            KNX-UF-IconSet since 2011

                            Kommentar


                              Hallo zusammen,

                              Ich bin auch seit kurzem in Edomi unterwegs und versuche aktuell meinen Stromzähler abzubilden.

                              Hab einen USB Lesekopf an einem Raspberry Pi, der per Socat die Daten bereit stellt (mit dem Skript von Lapheus: https://knx-user-forum.de/forum/proj...69#post1484969)

                              Aber auf dem Edomi Rechner habe ich feststellen müssen, dass CentOS 6.5 nicht systemd, sondern init.d verwendet.

                              Kann mir jemand helfen das folgende Skript auf init.d anzupassen?


                              Zitat von Lapheus Beitrag anzeigen
                              Auf dem Edomi Server:

                              Datei erstellen /usr/lib/systemd/system/socat.service mit folgendem Inhalt:
                              Code:
                                
                               [Unit] Description=IR-Lesekopf per Socat  [Service] ExecStart=/usr/bin/socat -U pty,link=/dev/virtUSB0,echo=0,wait-slave TCP:192.168.35.250:4000,retry=5 Restart=on-failure  [Install] WantedBy=multi-user.target
                              Dann ein

                              Code:
                                systemctl enable socat
                              systemctl start socat

                              Ich habe ebenso wie mfd einen Holley DTZ541.
                              Würde mich also auch über eine Erweiterung des LBS freuen.

                              viele Grüße

                              Rainer

                              Kommentar


                                Hallo zusammen,

                                ich habe mit dem Baustein auch seit neuerem Probleme. Ich habe zwei Leseköpfe direkt am Edomiserver per USB angebunden und
                                seit ca. 2-3 Monaten weicht der ausgelesene Wert stark von dem Wert ab, der mir am Zähler angezeigt wird. Nun weiß ich nicht woran
                                das liegen kann, ein zweiter Baustein der den Zähler der Wärmepumpe ausliest läuft problemlos.

                                sml.jpg

                                Habe schon Edomi neu gestartet, heruntergefahren, Projekt neu aktiviert und alle Remanentdaten gelöscht aber leider
                                alles ohne Erfolg. Auch ein aktivieren / deaktivieren des Bausteins brachte nichts.

                                Ist echt seltsam, dass das nun jahrelang funktioniert hat und auf einmal nicht mehr wobei
                                es beim zweiten Baustein noch problemlos klappt und auch die Gesamtwerte unter 1.8.0 stimmen.

                                Anbei die Ausgabe, was mir per USB geliefert wird. Ist die Frage ob das bereits in den Quelldaten falsch ist oder
                                später falsch ausgewertet wird.

                                [root@edomi ~]# cat /dev/ttyUSB0 | od -tx1
                                0000000 1b 1b 1b 1b 01 01 01 01 76 07 00 15 16 1c 4b 3a
                                0000020 62 00 62 00 72 63 01 01 76 01 01 07 00 15 08 09
                                0000040 c3 be 0b 06 45 4d 48 01 0b c1 ac c7 b8 01 01 63
                                0000060 54 c9 00 76 07 00 15 16 1c 4b 3b 62 00 62 00 72
                                0000100 63 07 01 77 01 0b 06 45 4d 48 01 0b c1 ac c7 b8
                                0000120 07 01 00 62 0a ff ff 72 62 01 65 08 09 f0 4e 77
                                0000140 77 07 81 81 c7 82 03 ff 01 01 01 01 04 45 4d 48
                                0000160 01 77 07 01 00 00 00 09 ff 01 01 01 01 0b 06 45
                                0000200 4d 48 01 0b c1 ac c7 b8 01 77 07 01 00 01 08 00
                                0000220 ff 64 00 01 82 01 62 1e 52 ff 56 00 0a 69 fd 7f
                                0000240 01 77 07 01 00 01 08 01 ff 01 01 62 1e 52 ff 56
                                0000260 00 0a 69 fd 7f 01 77 07 01 00 01 08 02 ff 01 01
                                0000300 62 1e 52 ff 56 00 00 00 00 00 01 77 07 01 00 10
                                0000320 07 00 ff 01 01 62 1b 52 ff 55 00 00 18 07 01 77
                                0000340 07 81 81 c7 82 05 ff 01 72 62 01 65 08 09 f0 4e
                                0000360 01 01 83 02 09 05 d9 bd 7d d6 96 d6 6e a3 9b f3
                                0000400 82 25 4c 71 6d a1 fc 4e e6 5a 1f a4 94 a6 7f ed
                                0000420 6a 01 0f 12 10 b9 09 e2 6c 5d 8c 61 1e 4a 96 e6
                                0000440 52 4d da 35 01 01 01 63 36 e4 00 76 07 00 15 16
                                0000460 1c 4b 3c 62 00 62 00 72 63 02 01 71 01 63 e5 ce
                                Ist das evtl. das selbe Problem wie bei @SirSydom?

                                Wenn ja, muss ich auch die PHP Datei abändern oder gibt es eine neue LBS Version mit den Anpassungen?


                                EDIT:

                                Habe nun mal die zwei Parameter -inlcr und -icrnl im PHP Script eingetragen, nun passen die Zählerwerte, sind
                                aktuell so 22505kWh auf dem Zähler.

                                Meine Zeile sieht nun so aus:

                                PHP-Code:
                                system("stty -F {$this->serialPort} {$this->baudrate} cs8 ignbrk -brkint -imaxbel -opost -inlcr -icrnl -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts > /dev/nulli 2>&1"); 
                                Viele Grüße
                                Steffen
                                Zuletzt geändert von regu; 15.06.2020, 12:39.

                                Kommentar

                                Lädt...
                                X