Ankündigung

Einklappen
Keine Ankündigung bisher.

Auslesen eines EHZ-Zählers

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

    Sodala ...

    PHP-Code:
    $vendorID $args[11]['value'];
    $productID $args[12]['value'];

    // if ftdi_sio module was already loaded, do nothing
    if (!shell_exec("lsmod | grep ftdi_sio")) {

        
    // check if usbserial kernel module loaded
        
    $response shell_exec("lsmod | grep usbserial");
        if (
    $response) {

            
    writeToCustomLog ("LBSLBSID_${id}""INFO:""usbserial kernel module is loaded.");

            
    // find out by whom usbserial is used
            
    $usedBy end(explode(" "$response));

            
    writeToCustomLog ("LBSLBSID_${id}""INFO:""Unloading kernel modules ...");
            
    // unload modules
            
    shell_exec("rmmod " $usedBy);
            
    shell_exec("rmmod usbserial");
        }

        
    // load ftdi_sio
        
    writeToCustomLog ("LBSLBSID_${id}""INFO:""Loading ftdi_sio module ...");
        
    shell_exec("modprobe ftdi_sio");

        
    // create file and fill with vendor and product id
        
    writeToCustomLog ("LBSLBSID_${id}""INFO:""Writing vendor and product id to new_id ...");
        
    shell_exec("echo " $vendorID " " $productID " > /sys/bus/usb-serial/drivers/ftdi_sio/new_id");
    }
    else {
        
    writeToCustomLog ("LBSLBSID_${id}""INFO:""ftdi_sio already loaded, continuing ...");



    Ist deshalb so lange geworden, weil ich für deinen Fall, dass usbserial schon läuft und von "jemand" Anderem als ftdi_sio verwendet wird, die module entsprechend entferne.

    Außerdem wird überprüft ob ftdi_sio schon geladen ist, damit bei einem Neustart des LBS oder Edomis, ohne einem Neustart der ganzen Maschine, nichts mehr gemacht wird, damit nichts durcheinander gerät.

    Ich hab mir außerdem noch 2 neue Eingänge für Vendor und Product ID definiert. Muss man natürlich nicht, dann einfach entsprechend in den ersten beiden Zeilen hardcoden.

    Klappt bei mir wunderbar. Hier der entsprechende Log-Auszug. Erst wird noch gelesen, dann der Neustart des Servers, daher mittendrin Loading ftdi_sio module...

    restart.JPG

    Eingefügt habe ich den Code in Zeile 105 des LBS, also nach dem check, ob port und baudrate gesetzt sind, aber vor dem Exec call.


    Hoffe das hilft und freue mich auf Feedback!

    LG,

    Christian

    Kommentar


      Wooohoo!! Jetzt erst gesehen!!
      Sorry ich schaue hier nicht so regelmäßig rein, muss ich mir mal angewöhnen!

      Das werde ich heute Abend aufjedenfall mal ausprobieren!!!
      Hat sich ja richtig gelohnt dir zu Helfen 🙂

      Kommentar


        ​​​Copty&Paste und hat sofort funktioniert.
        Der LBS liefert jetzt durchgehend Werte, auch nach Neustart.

        Allerdings bekomme ich folgende Meldung bei Edomi:
        Im Zeitabstand von ca 2 Minuten.

        "ftdi_sio ttyUSB0: ftdi_submit_read_urb - failed submitting read urb, error -1"

        image_97747.jpg


        EDIT:

        Ich habe die ersten Zeilen von dir eben entfernt.
        Das die Module so bleiben, auch wenn die schon belegt sind und nur FTDI geladen wird.

        Und wie vermutet wird der Lesekopf dann auf ttyUSB1 gelegt und der Fehler tritt auch nicht mehr auf.
        Lag also irgendwo in den ersten Zeilen!

        Vielen Dank nochmal für deine Mühe
        Zuletzt geändert von St3v3a3; 08.05.2020, 10:10.

        Kommentar


          Freut mich, dass es klappt!

          Wenn du das mit dem rausladen der Module doch brauchst, dann gib die Befehle mal nacheinander auf der Konsole ein und schick mir den Output.

          Ansonsten auch dir nochmal Danke für die Hilfe!

          Grüße,
          Christian

          Kommentar


            Zur Info: Im Kernel 2.6.32-754.29.2.el6.x86_64 ist der cp210x Treiber immer noch defekt.
            Nicht, dass da jemand ewig rumsucht oder so... Ist mir natürlich nicht passiert und ich hab sofort wusst woran es lag...

            Kommentar


              Ist das bei Centos 7 auch noch aktuell mit dem defekten Kernel?

              Bin umgezogen auf Centos 7 und kann die Daten mit "cat /dev/ttyUSB0" sehen aber im LBS kommt nichts an "Read 0 bytes."

              Kommentar


                Hi

                Nein, bei CentOS7 sollte das kein Problem mehr sein.
                Kind regards,
                Yves

                Kommentar


                  Zitat von toggle Beitrag anzeigen
                  Anbei das neue Kernel-Modul.
                  1. Die alte Datei /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/usb/serial/cp210x.ko irgendwo sichern.
                  2. Die neue auspacken und nach /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/usb/serial/cp210x.ko kopieren.
                  3. Den USB-IR-Lesekopf abziehen.
                  4. Anschließend "rmmod cp210x" und "insmod /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/usb/serial/cp210x.ko" ausführen.
                  5. Den USB-IR-Lesekopf anschließen und die Tests wiederholen.
                  Ich verzweifel gerade daran meinen Weidmann Lesekopf am EDOMI System anzuschließen.
                  Habe die cp210x.ko ausgetauscht.

                  Gebe dann folgenden Befehl ein: insmod /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/usb/serial/cp210x.ko

                  und bekomme folgende Fehlermeldung: insmod: error inserting '/lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/usb/serial/cp210x.ko': -1 Unknown symbol in module

                  Jemand eine Idee?
                  Viele Grüße
                  Markus

                  Kommentar


                    Hi

                    Welche CentOS Version?
                    Kind regards,
                    Yves

                    Kommentar


                      Zitat von markus1780 Beitrag anzeigen

                      Ich verzweifel gerade daran meinen Weidmann Lesekopf am EDOMI System anzuschließen.
                      Habe die cp210x.ko ausgetauscht.

                      Gebe dann folgenden Befehl ein: insmod /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/usb/serial/cp210x.ko

                      und bekomme folgende Fehlermeldung: insmod: error inserting '/lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/usb/serial/cp210x.ko': -1 Unknown symbol in module

                      Jemand eine Idee?
                      Viele Grüße
                      Markus
                      Ich habs gefixt bekommen, irgendwas war mit dem USB Port komisch, geholfen hat mir diese Anleitung: https://knx-user-forum.de/forum/projektforen/edomi/943964-auslesen-eines-ehz-zählers?p=1498082#post1498082

                      Kommentar


                        Wo bekommt man denn den IR Lesekopf (USB Version) her? Auf der volkszaehler.org Seite ist zwar die Beschreibung des Lesekopf, aber mir ist nicht klar wo man den Lesekopf beziehen kann. Amazon? Google? Alibaba?

                        Kommentar


                          Eigentlich kannst du da jeden IR USB Lese/Schreibkopf nehmen den du auf dem Markt findest.

                          Kommentar


                            Zitat von nno Beitrag anzeigen
                            Wo bekommt man denn den IR Lesekopf (USB Version) her?
                            Schreib eine Mail an Ardubel@web.de.
                            Der hat den Vertrieb für Volkszähler.org übernommen.

                            Kommentar


                              Hi,
                              Habe letzte Woche einen neuen Zähler (EMH) eingebaut bekommen und das Auslesen funktioniert nicht mehr😩.
                              Erweiterte Anzeige per PIN freigeschaltet > ohne Erfolg.
                              Der alte war auch ein EMH, da hat es 5 Jahre super funktioniert.
                              Im Log steht: Read 404 bytes.OBIS 255-255:255.255.255*255:

                              In der Anleitung des neuen Zählers stehen die folgenden OBIS Kennzahlen drin:

                              Als Kommunikationsprotokoll wird SML verwendet. Die Baudrate beträgt 9600 Baud fest. Die maximale Übertragungszeit eines Datentelegramms beträgt ca. 400 ms beim reduzierten Datensatz. Beim vollständigen Datensatz (zusätzliche Momentanwerte) beträgt die Übertragungszeit des Datentelegramms ca. 740 ms.
                              01 00 01 08 00 FF Zählwerk positive Wirkenergie, tariflos X X
                              01 00 01 08 01 FF Zählwerk positive Wirkenergie, Tarif 1 X X
                              01 00 01 08 02 FF Zählwerk positive Wirkenergie, Tarif 2 X X
                              01 00 02 08 00 FF Zählwerk negative Wirkenergie, tariflos X X X
                              01 00 02 08 01 FF Zählwerk negative Wirkenergie, Tarif 1 X X
                              01 00 02 08 02 FF Zählwerk negative Wirkenergie, Tarif 2 X X
                              01 00 10 07 00 FF Aktuelle Momen- tanwirkleistung (nur im „Vollständigen Datensatz“)
                              ​Am Beispiel: Aktuelle Momentanwirkleistung 1-0:16.7.0*255 funktioniert nicht mehr und 1-0:10.7.0*255 funktioniert auch nicht.

                              Wie muss hier der Wert am LBS-Eingang genau aussehen?

                              Danke und Gruß
                              Thomas

                              Kommentar


                                Hallo,

                                ich habe auch 2 "Volkszähler" angeschlossen. Alles funktioniert wie gewünscht - nur ganz selten mal ein fehlerhafter Wert (meist 0 oder jenseits 100000kWh, welche ich per Logik rausfiltere.

                                Leider tauchen im Log jeden Tag sporadisch folgender Fehler auf. Der Fehler "spamt" mir immer das Logfile zu, was mich nun doch etwas stört. Hat jemand eine Idee? System ist Cent OS 6.5.

                                image.png

                                Danke und Gruß
                                Stefan

                                Kommentar

                                Lädt...
                                X