Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS19000174: eBus Commands

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

    LBS19000174: eBus Commands

    Hallo Zusammen,

    ich habe einen LBS zum Senden von eBus Befehlen erstellt; er basiert auf der vcontrold Vorlage von MrIcemanLE - vielen Dank!
    Link

    Der Baustein setzt voraus, dass das Kommandozeilentool ebusctlr aus den ebusd Sourcen direkt auf dem edomi Server unter /usr/local/ebusd/ verfügbar ist. Falls es nicht kompiliert vorliegt, ist unten eine Installationsanleitung - auf eigene Gefahr!

    Es lassen sich bis zu 10 read oder write Kommandos absetzen; 500ms Pause ist zwischen den Kommandos fix vorgegeben.

    Probleme und Änderungen loggen wir hier im Thread.

    Viel Spaß,
    Patrick

    Code:
    ##ebusd unter edomi installieren
    #Benötigte Pakete zum Kompilieren
    sudo yum install autoconf automake gcc-c++ make git
    #Download und Installation
    cd /usr/local/
    git clone https://github.com/john30/ebusd.git
    cd ebusd
    ./autogen.sh --prefix=/usr/local
    make
    make install
    
    #Test Installation
    ebusd --help
    
    ##ebusd Config Dateien installieren
    cd /usr/local/
    wget https://github.com/john30/ebusd-configuration/releases/download/v2.1.0/ebusd-configuration-2.1.d2f888d-de_all.tgz
    tar xzf ebusd-configuration-2.1.*.tgz -C /etc/ebusd/
    
    #eBus Daemon im Hintergrund starten
    ebusd -d 192.168.15.120:5000 -n --latency=10000 -s -p 8888 --loglevel=info
    
    #Prüfen, welche Geräte gefunden wurden
    #Es kann einige Minuten dauern, bis alle Geräte angezeigt werden
    #Ggfs. warten und Befehl nach einiger Zeit wieder ausführen
    ebusctl scan result
    
    ##Beispiel
    #06;Vaillant;PMS00;0109;4302
    #15;Vaillant;UI   ;0507;6201
    #50;Vaillant;SOLSY;0500;6301
    #ed;Vaillant;PMS00;0109;4302
    
    #Nach Kommandos suchen (zum Beispiel nach Stichwort solar)
    ebusctl find -f solar
    
    ##Auszug
    #r,pms,SolarYieldCurrentDay,Heutiger Solarertrag,,06,b509,0d3b00,energy,s,UIN,,kWh,Accumulated solar gain from 00:00 to 24:00 if time is set
    #r,pms,SolarYieldTotal,Solarertrag gesamt,,06,b509,0d5600,energy4,s,ULG,,kWh,Kumulierter Solarertrag seit Installation
    
    ##Tagesertrag Solar
    ebusctl -s localhost -p 8888 read -c pms SolarYieldCurrentDay
    #3
    ##Gesamtertrag Solar
    ebusctl -s localhost -p 8888 read -c pms SolarYieldTotal
    #3587
    ##Außentemperatur
    ebusctl -s localhost -p 8888 read -c broadcast outsidetemp
    #2.500

    #2
    Hallo,

    ich hatte heute endlich Gelegenheit, den LBS zu testen. Leider erhalte ich oft ein "element not found" zurück. Die Pause zwischen den Kommandos hab ich testweise auf 2 Sekunden erhöht, leider ohne Erfolg. Und auf der Kommandozeile des Edomi-Rechners funktioniert es ohne Probleme. Woran könnte es liegen?

    Gruß Hantago

    Code:
    2017-02-03 21:49:45    570774    10247    debug    EXE19000174 [v0.1]:    LBS started
    2017-02-03 21:49:45    572156    10247    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c mc Flow1Sensor 2>&1
    2017-02-03 21:49:45    586235    10247    debug    EXE19000174 [v0.1]:    $output: ERR: element not found
    2017-02-03 21:49:47    090970    10247    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai CirPump 2>&1
    2017-02-03 21:49:47    109608    10247    debug    EXE19000174 [v0.1]:    $output: ERR: element not found
    2017-02-03 21:49:48    612632    10247    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai SDFlame 2>&1
    2017-02-03 21:49:48    631953    10247    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:49:50    136941    10247    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai WaterPressure 2>&1
    2017-02-03 21:49:50    166254    10247    debug    EXE19000174 [v0.1]:    $output: 1.895;ok
    2017-02-03 21:49:51    669523    10247    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c 470 HwcTempDesired 2>&1
    2017-02-03 21:49:51    699718    10247    debug    EXE19000174 [v0.1]:    $output: 50.0
    2017-02-03 21:49:53    202084    10247    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai extWP 2>&1
    2017-02-03 21:49:53    636955    10247    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:49:55    139830    10247    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai HwcWaterflow 2>&1
    2017-02-03 21:49:55    158178    10247    debug    EXE19000174 [v0.1]:    $output: ERR: element not found
    2017-02-03 21:49:56    663412    10247    debug    EXE19000174 [v0.1]:    LBS stopped
    2017-02-03 21:50:45    586076    10381    debug    EXE19000174 [v0.1]:    LBS started
    2017-02-03 21:50:45    587932    10381    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c mc Flow1Sensor 2>&1
    2017-02-03 21:50:45    604460    10381    debug    EXE19000174 [v0.1]:    $output: ERR: element not found
    2017-02-03 21:50:47    109661    10381    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai CirPump 2>&1
    2017-02-03 21:50:47    947016    10381    debug    EXE19000174 [v0.1]:    $output: on
    2017-02-03 21:50:49    450222    10381    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai SDFlame 2>&1
    2017-02-03 21:50:49    472342    10381    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:50:50    975071    10381    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai WaterPressure 2>&1
    2017-02-03 21:50:50    993196    10381    debug    EXE19000174 [v0.1]:    $output: 1.895;ok
    2017-02-03 21:50:52    496092    10381    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c 470 HwcTempDesired 2>&1
    2017-02-03 21:50:52    512247    10381    debug    EXE19000174 [v0.1]:    $output: ERR: element not found
    2017-02-03 21:50:54    015284    10381    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai extWP 2>&1
    2017-02-03 21:50:54    042844    10381    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:50:55    546197    10381    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai HwcWaterflow 2>&1
    2017-02-03 21:50:55    563898    10381    debug    EXE19000174 [v0.1]:    $output: 0.00
    2017-02-03 21:50:57    068325    10381    debug    EXE19000174 [v0.1]:    LBS stopped
    2017-02-03 21:51:45    602693    10514    debug    EXE19000174 [v0.1]:    LBS started
    2017-02-03 21:51:45    604146    10514    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c mc Flow1Sensor 2>&1
    2017-02-03 21:51:45    618585    10514    debug    EXE19000174 [v0.1]:    $output: ERR: element not found
    2017-02-03 21:51:47    123137    10514    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai CirPump 2>&1
    2017-02-03 21:51:47    138613    10514    debug    EXE19000174 [v0.1]:    $output: on
    2017-02-03 21:51:48    644819    10514    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai SDFlame 2>&1
    2017-02-03 21:51:55    251490    10514    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:51:56    759968    10514    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai WaterPressure 2>&1
    2017-02-03 21:51:56    778255    10514    debug    EXE19000174 [v0.1]:    $output: 1.895;ok
    2017-02-03 21:51:58    280970    10514    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c 470 HwcTempDesired 2>&1
    2017-02-03 21:51:59    455224    10514    debug    EXE19000174 [v0.1]:    $output: 50.0
    2017-02-03 21:52:00    958844    10514    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai extWP 2>&1
    2017-02-03 21:52:00    990350    10514    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:52:02    494806    10514    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai HwcWaterflow 2>&1
    2017-02-03 21:52:02    512523    10514    debug    EXE19000174 [v0.1]:    $output: ERR: element not found
    2017-02-03 21:52:04    015429    10514    debug    EXE19000174 [v0.1]:    LBS stopped
    2017-02-03 21:52:45    623770    10648    debug    EXE19000174 [v0.1]:    LBS started
    2017-02-03 21:52:45    625505    10648    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c mc Flow1Sensor 2>&1
    2017-02-03 21:52:45    644042    10648    debug    EXE19000174 [v0.1]:    $output: 25.62;ok
    2017-02-03 21:52:47    147756    10648    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai CirPump 2>&1
    2017-02-03 21:52:47    168289    10648    debug    EXE19000174 [v0.1]:    $output: on
    2017-02-03 21:52:48    671222    10648    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai SDFlame 2>&1
    2017-02-03 21:52:48    697499    10648    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:52:50    200771    10648    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai WaterPressure 2>&1
    2017-02-03 21:52:50    219624    10648    debug    EXE19000174 [v0.1]:    $output: 1.895;ok
    2017-02-03 21:52:51    722740    10648    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c 470 HwcTempDesired 2>&1
    2017-02-03 21:52:51    745240    10648    debug    EXE19000174 [v0.1]:    $output: 50.0
    2017-02-03 21:52:53    247994    10648    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai extWP 2>&1
    2017-02-03 21:52:53    266880    10648    debug    EXE19000174 [v0.1]:    $output: ERR: element not found
    2017-02-03 21:52:54    770622    10648    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai HwcWaterflow 2>&1
    2017-02-03 21:52:54    936316    10648    debug    EXE19000174 [v0.1]:    $output: 0.00
    2017-02-03 21:52:56    443109    10648    debug    EXE19000174 [v0.1]:    LBS stopped
    2017-02-03 21:53:45    642874    10783    debug    EXE19000174 [v0.1]:    LBS started
    2017-02-03 21:53:45    644784    10783    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c mc Flow1Sensor 2>&1
    2017-02-03 21:53:45    837441    10783    debug    EXE19000174 [v0.1]:    $output: 24.88;ok
    2017-02-03 21:53:47    342309    10783    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai CirPump 2>&1
    2017-02-03 21:53:47    358361    10783    debug    EXE19000174 [v0.1]:    $output: on
    2017-02-03 21:53:48    863270    10783    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai SDFlame 2>&1
    2017-02-03 21:53:48    882603    10783    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:53:50    386377    10783    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai WaterPressure 2>&1
    2017-02-03 21:53:50    541129    10783    debug    EXE19000174 [v0.1]:    $output: 1.895;ok
    2017-02-03 21:53:52    046797    10783    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c 470 HwcTempDesired 2>&1
    2017-02-03 21:53:52    078342    10783    debug    EXE19000174 [v0.1]:    $output: 50.0
    2017-02-03 21:53:53    580899    10783    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai extWP 2>&1
    2017-02-03 21:53:53    598414    10783    debug    EXE19000174 [v0.1]:    $output: ERR: element not found
    2017-02-03 21:53:55    101548    10783    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai HwcWaterflow 2>&1
    2017-02-03 21:53:55    119541    10783    debug    EXE19000174 [v0.1]:    $output: 0.00
    2017-02-03 21:53:56    623033    10783    debug    EXE19000174 [v0.1]:    LBS stopped
    2017-02-03 21:54:45    651906    10917    debug    EXE19000174 [v0.1]:    LBS started
    2017-02-03 21:54:45    653441    10917    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c mc Flow1Sensor 2>&1
    2017-02-03 21:54:45    671772    10917    debug    EXE19000174 [v0.1]:    $output: 24.88;ok
    2017-02-03 21:54:47    178828    10917    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai CirPump 2>&1
    2017-02-03 21:54:47    201030    10917    debug    EXE19000174 [v0.1]:    $output: on
    2017-02-03 21:54:48    706552    10917    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai SDFlame 2>&1
    2017-02-03 21:54:48    729835    10917    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:54:50    235620    10917    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai WaterPressure 2>&1
    2017-02-03 21:54:50    269444    10917    debug    EXE19000174 [v0.1]:    $output: 1.895;ok
    2017-02-03 21:54:51    772252    10917    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c 470 HwcTempDesired 2>&1
    2017-02-03 21:54:51    793373    10917    debug    EXE19000174 [v0.1]:    $output: 50.0
    2017-02-03 21:54:53    296195    10917    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai extWP 2>&1
    2017-02-03 21:54:53    469208    10917    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:54:54    971609    10917    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai HwcWaterflow 2>&1
    2017-02-03 21:54:54    991815    10917    debug    EXE19000174 [v0.1]:    $output: 0.00
    2017-02-03 21:54:56    501300    10917    debug    EXE19000174 [v0.1]:    LBS stopped
    2017-02-03 21:55:45    695403    11035    debug    EXE19000174 [v0.1]:    LBS started
    2017-02-03 21:55:45    696846    11035    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c mc Flow1Sensor 2>&1
    2017-02-03 21:55:45    711199    11035    debug    EXE19000174 [v0.1]:    $output: 24.88;ok
    2017-02-03 21:55:47    215172    11035    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai CirPump 2>&1
    2017-02-03 21:55:47    374723    11035    debug    EXE19000174 [v0.1]:    $output: on
    2017-02-03 21:55:48    881140    11035    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai SDFlame 2>&1
    2017-02-03 21:55:48    928409    11035    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:55:50    433248    11035    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai WaterPressure 2>&1
    2017-02-03 21:55:50    464977    11035    debug    EXE19000174 [v0.1]:    $output: 1.895;ok
    2017-02-03 21:55:51    968077    11035    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c 470 HwcTempDesired 2>&1
    2017-02-03 21:55:51    986311    11035    debug    EXE19000174 [v0.1]:    $output: 50.0
    2017-02-03 21:55:53    488586    11035    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai extWP 2>&1
    2017-02-03 21:55:53    521640    11035    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:55:55    024071    11035    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai HwcWaterflow 2>&1
    2017-02-03 21:55:55    039948    11035    debug    EXE19000174 [v0.1]:    $output: 0.00
    2017-02-03 21:55:56    543739    11035    debug    EXE19000174 [v0.1]:    LBS stopped
    2017-02-03 21:56:45    694628    11117    debug    EXE19000174 [v0.1]:    LBS started
    2017-02-03 21:56:45    696177    11117    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c mc Flow1Sensor 2>&1
    2017-02-03 21:56:45    711559    11117    debug    EXE19000174 [v0.1]:    $output: ERR: element not found
    2017-02-03 21:56:47    220352    11117    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai CirPump 2>&1
    2017-02-03 21:56:47    237467    11117    debug    EXE19000174 [v0.1]:    $output: on
    2017-02-03 21:56:48    740231    11117    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai SDFlame 2>&1
    2017-02-03 21:56:48    757777    11117    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:56:50    260905    11117    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai WaterPressure 2>&1
    2017-02-03 21:56:50    278840    11117    debug    EXE19000174 [v0.1]:    $output: 1.895;ok
    2017-02-03 21:56:51    781506    11117    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c 470 HwcTempDesired 2>&1
    2017-02-03 21:56:51    812186    11117    debug    EXE19000174 [v0.1]:    $output: ERR: element not found
    2017-02-03 21:56:53    314938    11117    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai extWP 2>&1
    2017-02-03 21:56:53    332343    11117    debug    EXE19000174 [v0.1]:    $output: off
    2017-02-03 21:56:54    834767    11117    debug    EXE19000174 [v0.1]:    $command: /usr/local/bin/ebusctl -s 192.168.0.32 -p 8888 read -c bai HwcWaterflow 2>&1
    2017-02-03 21:56:54    858540    11117    debug    EXE19000174 [v0.1]:    $output: 0.00
    2017-02-03 21:56:56    364609    11117    debug    EXE19000174 [v0.1]:    LBS stopped

    Kommentar


      #3
      Sieht in meinem Log leider ähnlich aus; bisher frage ich nur Außentemperatur, Solarertrag und Speichertemperaturen ab.

      Die internen KOs habe ich per Min/Max Wert so belegt, dass die fehlerhaften Werte nicht übernommen werden (s. iKO Hilfe).
      Somit kommt mancher Wert dann erst beim nächsten Abfrage Zyklus.

      Woran es liegt, kann ich Dir leider nicht sagen. Leider habe ich auch 0 ebusd Erfahrung. Nutze es seit einer Woche...
      Eventuell komme ich morgen zur Analyse; hast Du Dein log mal geprüft (/var/log/ebusd.log)? Vielleicht tauchen noch mehr Fehler auf; ich habe z.B. noch nicht am Poti gedreht

      Kommentar


        #4
        welche Hardware benutz ihr?
        EPIX
        ...und möge der Saft mit euch sein...
        Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

        Kommentar


          #5

          Kommentar


            #6
            Hab die gleiche als USB-Version...


            ebusd.log ist soweit unauffällig, ein paar unbekannte Telegramme, sonst nix.
            Zuletzt geändert von Hantago; 04.02.2017, 21:25.

            Kommentar


              #7
              johnm Hallo John, ggfs. kannst Du mir einen Denkanstoß geben: Aufgrund der o.g. Fehlermeldungen beim Abfragen via ebusctl bin ich auf folgenden Kommentar gestoßen:

              "Why do you use ebusctl anyway if you're in PHP? You could just directly connect to the TCP socket..."

              Also habe ich mich an einen neuen edomi LBS gewagt, der die Abfragen über Sockets lösen soll. Doch egal wie ich es versuche, ich komme zu keinem Ergebnis.
              Der Connect wird aufgebaut, Kommandos (bisher nur read) lassen sich auch auf den Socket schreiben, nur auslesen lässt er sich nicht.

              Kannst Du helfen und einen rudimentären Ablauf in PHP skizzieren oder sogar Stück Code? Besten Dank!

              Für alle edomi Nutzer, die Interesse an dem ebusd LBS haben, poste ich hier den aktuellen Stand. Da es noch nicht funktioniert, lade ich es noch nicht in den LBS Bereich:

              PHP-Code:
              ###[DEF]###
              [name = ebusd Socket v0.1 ]

              [e#1 TRIGGER   = Trigger ]
              [e#2 IMPORTANT = IP                #init=localhost]
              [e#3 IMPORTANT = Port            #init=8888]
              [e#4 IMPORTANT = eBus Command    #init=broadcast outsidetemp|pms SolarYieldCurrentDay|pms SolarYieldTotal|ui StorageSensorBottom|ui StorageSensorMiddle|ui StorageSensorTop ]
              [e#5 IMPORTANT = eBus Type        #init=read ]
              [e#6 OPTION    = Log level        #init=8 ]

              [a#1 = Output 1 ]
              [a#2 = Output 2 ]
              [a#3 = Output 3 ]
              [a#4 = Output 4 ]
              [a#5 = Output 5 ]
              [a#6 = Output 6 ]
              [a#7 = Output 7 ]
              [a#8 = Output 8 ]
              [a#9 = Output 9 ]
              [a#10 = Output 10 ]

              [v#100 = 0.1 ]
              [v#101 = 19000175 ]
              [v#102 = ebusd Socket ]
              [v#103 = 0 ]

              ###[/DEF]###


              ###[HELP]###
              This LBS sends up to 10 read/write commands to a running ebusd instance via socket binding.
              Prerequisites:
              - eBus connector
              - Running ebusd daemon (tested with compiled & installed ebusd on edomi server itself)

              E1: Triggers the LBS, e.g. with System KO 21 every hour
              E2: IP where ebusd is running
              E3: Port of ebusd instance
              E4: Up to 10 eBus commands separated by |
              E5: Command Type, either read or write
              E6: Log Level 0-8

              A1-A10: Output of the different commands

              V100: Version
              V101: LBS Number
              V102: Log file name
              V103: Log level

              Changelog:
              ==========
              v0.1: Initial version

              ###[/HELP]###


              ###[LBS]###
              <?
              function LB_LBSID($id) {
                  if ($E=logic_getInputs($id)) {
                      setLogicElementVar($id, 103, $E[6]['value']); //set loglevel to #VAR 103
                      if ($E[1]['value']==1 && $E[1]['refresh']==1) callLogicFunctionExec(LBSID, $id);    
                  }
              }
              ?>
              ###[/LBS]###


              ###[EXEC]###
              <?
              require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");

              set_time_limit(60);    //Script soll maximal 60 Sekunden laufen

              function logging($id,$msg, $var=NULL, $priority=8)
              {
                  $E=getLogicEingangDataAll($id);
                  $logLevel = getLogicElementVar($id,103);
                  if (is_int($priority) && $priority<=$logLevel && $priority>0)
                  {
                      $logLevelNames = array('none','emerg','alert','crit','err','warning','notice','info','debug');
                      $version = getLogicElementVar($id,100);
                      $lbsNo = getLogicElementVar($id,101);
                      $logName = getLogicElementVar($id,102) . ' --- LBS'.$lbsNo;
                      strpos($_SERVER['SCRIPT_NAME'],$lbsNo) ? $scriptname='EXE'.$lbsNo : $scriptname = 'LBS'.$lbsNo;
                      writeToCustomLog($logName,str_pad($logLevelNames[$logLevel],7), $scriptname." [v$version]:\t".$msg);

                      if (is_object($var)) $var = get_object_vars($var); // transfer object into array
                      if (is_array($var)) // print out array
                      {
                          writeToCustomLog($logName,str_pad($logLevelNames[$logLevel],7), $scriptname." [v$version]:\t================ ARRAY/OBJECT START ================");
                          foreach ($var as $index => $line)
                              writeToCustomLog($logName,str_pad($logLevelNames[$logLevel],7), $scriptname." [v$version]:\t".$index." => ".$line);
                          writeToCustomLog($logName,str_pad($logLevelNames[$logLevel],7), $scriptname." [v$version]:\t================ ARRAY/OBJECT END ================");
                      }
                  }
              }


              sql_connect();

              if ($E=logic_getInputs($id)) {

                  logging($id,"LBS started",7);

                  $ip = gethostbyname($E[2]['value']); // IP where ebusd is running
                  $port = $E[3]['value']; // Port of ebusd (default: 8888)
                  $cmd = explode("|", $E[4]['value']);
                  $type = $E[5]['value'];

                  $n = count($cmd);

                  if ($n>10) logging($id, "Too many command elements specfied on input E4. Please limit to 10.",2);

                  $i=1;

                  //Open Socket
                  //$fp = fsockopen($ip, $port, $errno, $errstr, 5);
                  $srv = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
                  //$srv = fsockopen($ip, $port, $errno, $errstr, 3);
                  if (!$srv) {
                      //Error creating socket
                      $errno = socket_last_error();
                      $errstr = socket_strerror($errno);
                      logging($id,"Error creating socket (".$errno."): ".$errstr,4);
                      socket_clear_error();
                      die("Error creating socket (".$errno."): ".$errstr);
                  }
                  logging($id,"Socket created",7);


                  //stream_set_timeout($srv, 2);
                  socket_set_timeout($srv, 2);
                  socket_set_option($srv,SOL_SOCKET, SO_RCVTIMEO, array("sec"=>2, "usec"=>0));
                  socket_set_option($srv,SOL_SOCKET, SO_SNDTIMEO, array("sec"=>2, "usec"=>0));
                  logging($id,"Timeout options set",7);
                  //Connect to socket
                  if (!socket_connect($srv, $ip, $port)) {
                      //Error connecting to socket
                      @socket_close($srv);
                      $errno = socket_last_error();
                      $errstr = socket_strerror($errno);
                      logging($id,"Error connecting to socket (".$errno."): ".$errstr,4);
                      socket_clear_error();
                      die("Error connecting to socket (".$errno."): ".$errstr);
                  }
                  logging($id,"Socket connected",7);

                  /*Bind Socket
                  if (socket_bind($srv, $ip, $port) === false) {
                      //Error binding socket
                      @socket_close($srv);
                      $errno = socket_last_error();
                      $errstr = socket_strerror($errno);
                      logging($id,"Error binding socket (".$errno."): ".$errstr,4);
                      socket_clear_error();
                      die("Error binding socket (".$errno."): ".$errstr);
                  }
                  logging($id,"Socket bound",7);

                  //Socket Listen
                  if (socket_listen($srv, 5)===false) {
                      @socket_close($srv);
                      $errno = socket_last_error();
                      $errstr = socket_strerror($errno);
                      logging($id,"Error listening to socket (".$errno."): ".$errstr,4);
                      socket_clear_error();
                      die("Error listening to socket (".$errno."): ".$errstr);
                  }
                  logging($id,"Listening to socket",7);

                  //Socket Waiting
                  if (($cli=socket_accept($srv))===false) {
                      @socket_close($srv);
                      $errno = socket_last_error();
                      $errstr = socket_strerror($errno);
                      logging($id,"Error accepting client (".$errno."): ".$errstr,4);
                      socket_clear_error();
                      die("Error accepting client (".$errno."): ".$errstr);
                  }
                  logging($id,"Client accepted",7);
                  @socket_set_block($cli);*/

                  //Write commands to opened socket
                  foreach ($cmd as $c)
                  {
                      //Define Command
                      $command = $type.' -c '.$c.' \n';
                      logging($id, '$command: '.$command, 8);

                      //if(!socket_send($srv , $command , strlen($command) , 0))
                      //if(!fwrite($srv, $command))
                      if(false === socket_write($srv , $command , strlen($command)))
                      {
                          $errno = socket_last_error();
                          $errstr = socket_strerror($errno);
                          logging($id,"Error sending command to socket (".$errno."): ".$errstr,4);
                          socket_clear_error();
                          $return = "Error";
                      } else {
                          logging($id,"Command sent to socket",8);
                          $return = "OK";
                      }
                      //if ($type == "read") {
                      //if(socket_recv($srv, $output, 256, MSG_WAITALL) === FALSE)
                      //if(false === ($output = fgets($srv)))
                      if(false === ($output = @socket_read($srv, 256, PHP_BINARY_READ)))
                      {
                          $errno = socket_last_error();
                          $errstr = socket_strerror($errno);
                          logging($id,"Error receiving result from socket (".$errno."): ".$errstr,4);
                          socket_clear_error();
                          $return = "Error";
                      } else {
                          logging($id,"Result read from socket: ".$output,8);
                          $return = $output;
                      }
                      //}

                      //Read return value and write to output
                      //$return = stream_get_contents($fp, -1);
                      logic_setOutput($id,$i,$return);
                      $i++;
                      if ($i>10) break;
                  }
                  //Close Socket
                  //fclose($srv);
                  //@socket_close($cli);
                  @socket_close($srv);
                  logging($id,"LBS stopped",7);
              }


              sql_disconnect();
              ?>
              ###[/EXEC]###
              Und hier die Ausgabe:

              Code:
               [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
              [TR]
              [TD]Zeitstempel[/TD]
               			[TD]ms[/TD]
               			[TD]PID[/TD]
               			[TD]LogLevel[/TD]
               			[TD]Meldung[/TD]
               		[/TR]
              [TR]
              [TD]2017-02-19 15:02:46[/TD]
               			[TD]737999[/TD]
               			[TD]22186[/TD]
               			[TD]debug [/TD]
               			[TD]EXE19000175 [v0.1]: LBS started[/TD]
               		[/TR]
              [TR]
              [TD]2017-02-19 15:02:46[/TD]
               			[TD]739759[/TD]
               			[TD]22186[/TD]
               			[TD]debug [/TD]
               			[TD]EXE19000175 [v0.1]: Socket created[/TD]
               		[/TR]
              [TR]
              [TD]2017-02-19 15:02:46[/TD]
               			[TD]741086[/TD]
               			[TD]22186[/TD]
               			[TD]debug [/TD]
               			[TD]EXE19000175 [v0.1]: Timeout options set[/TD]
               		[/TR]
              [TR]
              [TD]2017-02-19 15:02:46[/TD]
               			[TD]742085[/TD]
               			[TD]22186[/TD]
               			[TD]debug [/TD]
               			[TD]EXE19000175 [v0.1]: Socket connected[/TD]
               		[/TR]
              [TR]
              [TD]2017-02-19 15:02:46[/TD]
               			[TD]742877[/TD]
               			[TD]22186[/TD]
               			[TD]debug [/TD]
               			[TD]EXE19000175 [v0.1]: $command: read -c broadcast outsidetemp \n[/TD]
               		[/TR]
              [TR]
              [TD]2017-02-19 15:02:46[/TD]
               			[TD]743707[/TD]
               			[TD]22186[/TD]
               			[TD]debug [/TD]
               			[TD]EXE19000175 [v0.1]: Command sent to socket[/TD]
               		[/TR]
              [TR]
              [TD]2017-02-19 15:02:48[/TD]
               			[TD]744949[/TD]
               			[TD]22186[/TD]
               			[TD]debug [/TD]
               			[TD]EXE19000175 [v0.1]: Error receiving result from socket (11): Resource temporarily unavailable[/TD]
               		[/TR]
              [/TABLE]

              Kommentar


                #8
                Hallo Patrick,
                ich würde dir gerne helfen, aber meine php Kenntnisse sind wahrscheinlich geringer als Deine.
                Da ich vor habe eine Vaillant BWWP mit Ebus-Schnittstelle zu kaufen, ist mein Interesse an diesem LBS sehr groß. Nur testen kann ich noch nicht.

                Was mir in den Meldungen fehlt ist der Port und das Binding, deshalb habe ich mal meinen rudimentären LBS für eine Kameraabfrage angehängt.

                Code:
                $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);                        //Socket einrichten
                
                if (!$socket) {
                        LB_LBSID_debug($id,"Socket create failed !",2);
                        return;
                }else{
                        LB_LBSID_debug($id,"Socket connected IP ".$ip." Port ".$port,5);
                }
                
                if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) {                //Socket Port wiederverwenden
                    LB_LBSID_debug($id,"Socket_set_option failed !",2);
                    exit;
                }
                if (!socket_bind($socket,0, $port)) {                                        //Socket binden
                        LB_LBSID_debug($id,"Socket bind failed !",2);
                        return;
                }else{
                    LB_LBSID_debug($id,"Socket_bind success !",5);
                }
                if(!socket_listen($socket, 10)) {                                            //Socket listen
                    $errorcode = socket_last_error();
                    $errormsg = socket_strerror($errorcode);
                    LB_LBSID_debug($id,"Could not listen on socket :".$errorcode." ".$errormsg,2);
                    return;
                }else{
                    LB_LBSID_debug($id,"Socket_listen success !",5);
                }
                
                socket_set_block($socket);
                
                while(getSysInfo(1)>=1) {    //Hauptschleife (wird beim Beenden oder Neustart von EDOMI verlassen)
                
                    if(($client = socket_accept($socket)) !== false)  {
                        LB_LBSID_debug($id,"Client ".$client." is connected.",5);
                        $clients[] = $client;
                
                        if(socket_getpeername($client , $ip , $port))  {
                            LB_LBSID_debug($id,"Client ".$ip." : ".$port." is now connected to Edomi.",5);
                            logic_setOutput($id,1,"Client $ip : $port connected.");
                        }else{LB_LBSID_debug($id,"Client is not connected to Edomi.",2);}
                
                
                        $data = socket_read($client,$dLength);
                        logic_setOutput($id,2,$data);
                        LB_LBSID_debug($id,$data);
                
                        $motion = preg_match("/Motion alarm/", $data);
                        $fielddetect = preg_match("/fielddetection alarm/", $data);
                        $linedetect = preg_match("/linedetection alarm/", $data);
                
                        if ($motion) {logic_setOutput($id,3,$motion);}
                        if ($fielddetect)  {logic_setOutput($id,4,$fielddetect);}
                        if ($linedetect)  {logic_setOutput($id,5,$linedetect);}
                
                
                
                
                    }
                    usleep(1000);        //CPU-Last verteilen (die L§nge der Pause sollte je nach Bedarf angepasst werden - je l§nger, desto ressourcenschonender)
                }
                sql_disconnect();
                
                
                function LB_LBSID_debug($id,$s,$l=6) {
                    $a=array("Emergency","Alert","Critical","Error","Warning","Notice","Informational","Debug");
                    $E=logic_getInputs($id);
                    $DEBUG=$E[10]['value'];
                    if ($DEBUG==1) {writeToCustomLog("LBSLBSID",$l,"(ID$id) ".$a[$l].": ".$s);}
                }
                >>Smelly One<<
                >> BURLI <<
                Grüße Armin

                Kommentar


                  #9
                  Hi Armin,

                  vielen Dank für Dein Beispiel - wo liegt jetzt gleich der Unterschied in unseren PHP Kenntnissen? :-)

                  Meine Code oben basiert auf Beispielen von php.net und aus dem Netz; mit bind, listen und accept hatte ich auch gespielt - dabei handelt es sich aber um Befehle zum Betreiben eines Servers. Der läuft aber bereits (ebusd) und ich möchte mich nur mit diesem verbinden: connect.

                  Das funktioniert auch gut; gebe ich einen anderen Port an, erhalte ich einen Fehler. Auf Port 8888 läuft also ein Server, der meine Verbindung annimmt. Mit socket_read und socket_rcv habe ich och ein wenig gespielt, komme aber zu keinem Ergebnis :-(

                  Wenn ich vorwärts komme, melde ich mich hier wieder

                  Kommentar


                    #10
                    Immerhin: Wireshark zeigt mir Antworten an - mein LBS nimmt diese nur nicht auf.
                    Ob die Antworten Sinn ergeben, kann ich aus den Rohdaten nicht erkennen. Hm, mache ein anderes Mal weiter.

                    Kommentar


                      #11
                      Zitat von Stoxn Beitrag anzeigen
                      Hi Armin,
                      Der läuft aber bereits (ebusd) und ich möchte mich nur mit diesem verbinden: connect.

                      Das funktioniert auch gut; gebe ich einen anderen Port an, erhalte ich einen Fehler. Auf Port 8888 läuft also ein Server, der meine Verbindung annimmt. Mit socket_read und socket_rcv habe ich och ein wenig gespielt, komme aber zu keinem Ergebnis :-(

                      Wenn ich vorwärts komme, melde ich mich hier wieder
                      Stimmt, ebusd ist ja der Server.
                      Ich hatte mal so ein "Antwort"-Problem mit meinem Ubuntu-Server, da war es die Firewall die ich dummerweise vorher selbst bei den Ports beschnitten hatte.

                      Leider kann ich dich (noch) nicht mit Tests unterstützen, da ich noch auf Freigabe des Energieberaters warten muss. Erst dann kann ich loslegen.
                      >>Smelly One<<
                      >> BURLI <<
                      Grüße Armin

                      Kommentar


                        #12
                        Hallo Patrick,

                        kennst Du den Baustein von JuMi2006 für den HS schon ? Klick
                        >>Smelly One<<
                        >> BURLI <<
                        Grüße Armin

                        Kommentar


                          #13
                          Da ist das Ding: LBS19000175 ebusd Socket

                          Fürs Protokoll: Knackpunkt war, dass an jeden Befehl ein "\x0A" angehangen werden musste - \n oder \n\r hat nicht funktioniert.
                          Und Bind ist doch notwendig, sonst kommt tatsächlich nichts an

                          Kommentar


                            #14
                            Wow ! Respekt und DANKE dafür !
                            >>Smelly One<<
                            >> BURLI <<
                            Grüße Armin

                            Kommentar


                              #15
                              Hi, vielen Dank für diesen LBS. Ich mache gerade meine ersten Versuche. Bin leider blutiger Unixanfänger, wie bekomme ich
                              Code:
                              #eBus Daemon im Hintergrund starten
                              ebusd -d 192.168.15.120:5000 -n --latency=10000 -s -p 8888 --loglevel=info
                              in den "Autostart"?

                              Hat jemand Erfahrung mit einer Vaillant VWL S (geoTHERM VWL 141/3 S)? Außentemperatur kann ich abfragen, aber ansonsten funktionieren die wenigsten Code-Wörter.

                              Kommentar

                              Lädt...
                              X