26 (edytowany przez bizonx 2019-10-08 15:02:46)

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Tak ,Samsung.

Wreszcie dostałem adapter Ebus->TTL, i pożeniłem go z Wemos D1 i mam teraz interfejs po Wifi.
Chodzi to zdumiewająco dobrze. Łączę sie z Vaillantem, zrobiłem też skrypt pobierający dane do rrd, będą wykresy.
Problem mam tylko z cronem bo nie działa mi. Tzn działa cron bo mam tam też inny wpis ale ten skrypt nie odpala się, choć recznie działa.
/etc/crontabs/root

* * * * * /bin/sh /etc/ebusd/ebus-get-data.sh

/etc/ebusd/ebus-get-data.sh

#!/bin/sh

# configuration
IP=192.168.1.1
EBUS="/usr/bin/ebusctl -s $IP read -m 30"
...
root@OpenWrt:~# ls -l /etc/ebusd/ebus-get-data.sh
-rwxr-xr-x    1 root     root          3026 Oct  8 14:36 /etc/ebusd/ebus-get-data.sh

Domoticz próbowałem ale mi się rozwalił i czekam na update :-)

27

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Bez tego /bin/sh w cronie. W ogóle wykonuje się to?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

28 (edytowany przez bizonx 2019-10-08 15:07:14)

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Cezary napisał/a:

Bez tego /bin/sh w cronie. W ogóle wykonuje się to?

Tak od ręki chodzi, bez /bin/sh też nie działa.
Mam w/g Twojego poradnika zmieniany pin dla sieci gościnnej w nocy i to działa.

cały Crontab

* * * * * /bin/sh /etc/ebusd/ebus-get-data.sh
1 0 * * * uci set wireless.guest.key=$(head /dev/urandom | tr -dc '0-9' | cut -b0-8); uci commit wireless; wifi

29

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Dodaj mu jawnie

*/1 * * * *  /etc/ebusd/ebus-get-data.sh

zrestartuj crona i zobacz w logach czy się w ogóle proces odpala. Jak tak - umieść jaką drugą linię "logger "tu bylem"" i zobaczy czy pojawi się w logach.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

30 (edytowany przez bizonx 2019-10-08 15:20:53)

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Ok, działa. Muszę znaleść problem w skrypcie jeszcze

root@OpenWrt:~# logread | grep ebus
Tue Oct  8 16:16:00 2019 cron.info crond[19323]: USER root pid 19461 cmd /etc/ebusd/ebus-get-data.sh
Tue Oct  8 16:16:49 2019 user.notice root: ebus pobieram dane - tu byłem
Tue Oct  8 16:17:00 2019 cron.info crond[19323]: USER root pid 19532 cmd /etc/ebusd/ebus-get-data.sh
Tue Oct  8 16:17:00 2019 user.notice root: ebus pobieram dane - tu byłem
Tue Oct  8 16:18:00 2019 cron.info crond[19323]: USER root pid 19562 cmd /etc/ebusd/ebus-get-data.sh
Tue Oct  8 16:18:00 2019 user.notice root: ebus pobieram dane - tu byłem
root@OpenWrt:~#

31

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Zrób sobie kawę, a później
- w pierwszej linii skryptu daj #!/bin/sh -x
- w cronie zrób

*/1 * * * *  /etc/ebusd/ebus-get-data.sh >> /tmp/log.txt

I jedziesz...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

32

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Cezary napisał/a:

Zrób sobie kawę, a później
- w pierwszej linii skryptu daj #!/bin/sh -x
- w cronie zrób

*/1 * * * *  /etc/ebusd/ebus-get-data.sh >> /tmp/log.txt

I jedziesz...

Dzięki śliczne.

33 (edytowany przez bizonx 2019-10-08 20:03:01)

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Dziwna sprawa, dla mnie hheh.
Mogę odpalać ręcznie ten skrypt sekunda po sekundzie i wszystko jest ok.
Z crona co minutę i nie zaczytuje danych z ebusd. Nie rozumiem tego. Tzn. czasem coś zczyta.

Z ręki

root@OpenWrt:/etc/ebusd# ./ebus-get-data.sh
2019-10-08 20:29:15;PositionValveSet=100;FlowTemp=23.38;FlowTempDesired=0.00;ModulationTempDesired=22.7;PartloadHcKW=0;PumpPower=0;RemainingBoilerblocktime=0;Flame=off
root@OpenWrt:/etc/ebusd# ./ebus-get-data.sh
2019-10-08 20:30:46;PositionValveSet=100;FlowTemp=23.25;FlowTempDesired=0.00;ModulationTempDesired=22.7;PartloadHcKW=0;PumpPower=0;RemainingBoilerblocktime=0;Flame=off
root@OpenWrt:/etc/ebusd# ./ebus-get-data.sh
2019-10-08 20:31:52;PositionValveSet=100;FlowTemp=23.25;FlowTempDesired=0.00;ModulationTempDesired=22.7;PartloadHcKW=0;PumpPower=0;RemainingBoilerblocktime=0;Flame=off
root@OpenWrt:/etc/ebusd#

z crona

2019-10-08 20:31:00;PositionValveSet=error;FlowTemp=error;FlowTempDesired=error;ModulationTempDesired=error;PartloadHcKW=0;PumpPower=0;RemainingBoilerblocktime=error;Flame=error
2019-10-08 20:32:00;PositionValveSet=error;FlowTemp=23.25;FlowTempDesired=0.00;ModulationTempDesired=22.7;PartloadHcKW=0;PumpPower=0;RemainingBoilerblocktime=error;Flame=off
2019-10-08 20:33:00;PositionValveSet=error;FlowTemp=23.25;FlowTempDesired=error;ModulationTempDesired=error;PartloadHcKW=0;PumpPower=0;RemainingBoilerblocktime=error;Flame=error
2019-10-08 20:34:00;PositionValveSet=error;FlowTemp=23.12;FlowTempDesired=error;ModulationTempDesired=22.7;PartloadHcKW=0;PumpPower=0;RemainingBoilerblocktime=error;Flame=error

Jak widać  z crona pełno "error", choć czasem są wartości.
Za to z ręki odpalane wartości są zawsze.
Wywaliłem sporo by uprościć ten skrypt do analizy.

ebus-get-data.sh

#!/bin/sh 

# configuration
IP=192.168.1.1

EBUS="/usr/bin/ebusctl -s $IP read -m 30"
VAILLANT_LOG=/tmp/vaillant-ecotec.log

LOG_RESULT=""

# ebusctl return value from ebusd
function getRegister()
{
    result=$($EBUS $1)
    LOG_RESULT=$result
    
    if [ "${result:0:3}" == "ERR" ]; then
       echo "error"
    else
    par=1
    if [ $# -gt 1 ]; then
        par=$2
    fi
    
    echo $(awk -vres="$result" -vn="$par" 'BEGIN {split(res,a,";"); print a[n]}')
    fi
}

# timestamp
timestamp=$(date +%s)
datetime=$(date "+%Y-%m-%d %H:%M:%S")

# check if ebusctl returns correct value
datetime=$(getRegister vdatetime)

if [ "$datetime" == "error" ]; then
    echo $datetime "Ebusd data update error"
    #return 1
fi 

# get data
flowtemp=$(getRegister FlowTemp)
flowtempdesired=$(getRegister FlowTempDesired)
returntemp=$(getRegister ReturnTemp)
storagetemp=$(getRegister StorageTemp)
outdoortemp=$(getRegister OutdoorstempSensor)
flame=$(getRegister Flame)
waterpressure=$(getRegister WaterPressure)
modulationtempdesired=$(getRegister ModulationTempDesired)
partloadhckw=0 #$(getRegister PartloadHcKW)
pumppower=0 #$(getRegister PumpPower)
remainingboilerblocktime=$(getRegister RemainingBoilerblocktime)
positionvalveset=$(getRegister PositionValveSet)

# write data
data="$datetime;PositionValveSet=$positionvalveset;FlowTemp=$flowtemp;FlowTempDesired=$flowtempdesired;ModulationTempDesired=$modulationtempdesired;PartloadHcKW=$partloadhckw;PumpPower=$pumppower;RemainingBoilerblocktime=$remainingboilerblocktime;Flame=$flame" 

echo $data >> $VAILLANT_LOG
# debug
echo $data 

34

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Namówiłeś mnie na ten moduł jutro może podjadę do gościa i go kupię. Domoticza sam sobie skompiluj. Jakby ci się nie chciało zmieniać makefile
https://github.com/kofec/Domoticz-Openw … ster/utils
Ostatecznie czemu czekałeś na wemos? Nie doszedłeś  czemu nie działał Ci serial na USB?

@cezary
Czy mogę tam wrzucić makefile od ebusd?

35

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Przepisałem na pythona i to samo. Z ręki czyta ładnie, a z crona czasami.

ebus-get-data.py

import subprocess
from datetime import datetime


def getRegister(reg):
    runParam="ebusctl read "+reg
    cp = subprocess.run(runParam,shell=True,stdout=subprocess.PIPE)
    cp_string=cp.stdout.rstrip().decode('utf-8')
    regVal=cp_string[0:5]
    return regVal

positionValveSet=getRegister("PositionValveSet")
flowTemp=getRegister("FlowTemp")
flowTempDesired=getRegister("FlowTempDesired")
modulationTempDesired=getRegister("ModulationTempDesired")
partloadHcKW="0.00" #getRegister("PartLoadHcKW")
pumpPower="0.00" #getRegister("PumpPower")
remainingBoilerblocktime=getRegister("RemainingBoilerblocktime")
flame=getRegister("Flame")

# current date and time
now=datetime.now().strftime("%Y-%m-%d %H:%M:%S")
timestamp= datetime.now().strftime('%s')

record=";".join([now,"PositionValveSet="+positionValveSet,"FlowTemp="+flowTemp,"FlowTempDesired="+flowTempDesired,"ModulationTempDesired="+modulationTempDesired,"PartloadHcKW="+partloadHcKW,"PumpPower="+pumpPower,"RemainingBoilerblocktime="+remainingBoilerblocktime,"Flame="+flame])

#print(record)

f = open("/tmp/vaillant-ecotec.log", "a")
f.write(record+"\r\n")
f.close()

36

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

kofec napisał/a:

Czy mogę tam wrzucić makefile od ebusd?

Zrób co chcesz przecież.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

37

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

bizonx napisał/a:

Przepisałem na pythona i to samo. Z ręki czyta ładnie, a z crona czasami.

Problem z uprawnieniami dla procesu uruchomionego w cronie?
Cron też potrafi być paskudny bo HOME potrafi nie ustawić (albo wskazać na roota) i część rzeczy głupieje.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

38

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Jak dodam zmienne środowiskowe do crona albo skryptu to coś pomoże?

39

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Sprawdź, nic na tym nie tracisz.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

40 (edytowany przez bizonx 2019-10-09 17:54:14)

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Środowiskowe nie pomogły
crontab

HOME=/root
SHELL=/bin/ash
PATH=/usr/sbin:/usr/bin:/sbin:/bin:/sbin:/bin

*/1 * * * * /etc/ebusd/ebus-get-data.sh >> /tmp/log_ebus.txt

uprościłem skrypt maksymalnie

#!/bin/sh 

PATH=/usr/sbin:/usr/bin:/sbin:/bin:/sbin:/bin

/usr/bin/ebusctl read vdatetime

Nie działa :-( z crona
tzn działa ale zwraca ERR: element not found

41

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

To zrób debug tego ebusctl i zobacz na czym się wykłada.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

42 (edytowany przez bizonx 2019-10-09 18:17:58)

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Cezary napisał/a:

To zrób debug tego ebusctl i zobacz na czym się wykłada.

Nie bardzo wiem jak

Ok, coś znalazlem

Daemon
--loglevel=LEVEL
Only write log below or equal to LEVEL: error/notice/info/debug [notice].

43

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

W kodzie powstawiaj printf w kilku miejscach żebyś wiedział czego nie robi.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

44 (edytowany przez bizonx 2019-10-09 18:35:25)

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Coś znalazłem
sekwencja po odpaleniu skryptu z ręki

skrypt

#!/bin/sh 

PATH=/usr/sbin:/usr/bin:/sbin:/bin:/sbin:/bin

echo $(date "+%Y-%m-%d %H:%M:%S")
/usr/bin/ebusctl read -f Flame

Odpalenie z ręki i dobra odpowiedź

root@OpenWrt:~# /etc/ebusd/ebus-get-data.sh
2019-10-09 19:22:13
off

root@OpenWrt:~#

I log
/tmp/log/ebusd.log

2019-10-09 19:22:13.817 [network info] [00009] client connection opened 127.0.0.1
2019-10-09 19:22:13.817 [main debug] performing regular tasks
2019-10-09 19:22:13.817 [main debug] >>> read -f Flame
2019-10-09 19:22:13.817 [bus info] send message: 3108b509030d0500
2019-10-09 19:22:13.817 [network debug] [00009] wait for result
2019-10-09 19:22:13.835 [bus debug] arbitration delay 23 micros
2019-10-09 19:22:13.835 [bus debug] switching from ready to send command
2019-10-09 19:22:13.841 [bus debug] send/receive symbol latency 6 ms
2019-10-09 19:22:13.848 [bus debug] send/receive symbol latency 6 ms
2019-10-09 19:22:13.854 [bus debug] send/receive symbol latency 6 ms
2019-10-09 19:22:13.861 [bus debug] send/receive symbol latency 6 ms
2019-10-09 19:22:13.867 [bus debug] send/receive symbol latency 6 ms
2019-10-09 19:22:13.874 [bus debug] send/receive symbol latency 6 ms
2019-10-09 19:22:13.881 [bus debug] send/receive symbol latency 6 ms
2019-10-09 19:22:13.881 [bus debug] switching from send command to send command CRC
2019-10-09 19:22:13.887 [bus debug] send/receive symbol latency 6 ms
2019-10-09 19:22:13.887 [bus debug] switching from send command CRC to receive command ACK
2019-10-09 19:22:13.892 [bus debug] switching from receive command ACK to receive response
2019-10-09 19:22:13.906 [bus debug] switching from receive response to receive response CRC
2019-10-09 19:22:13.912 [bus debug] switching from receive response CRC to send response ACK
2019-10-09 19:22:13.919 [bus debug] send/receive symbol latency 7 ms
2019-10-09 19:22:13.919 [update info] sent MS cmd: 3108b509030d0500 / 01f0
2019-10-09 19:22:13.921 [update notice] sent read bai Flame QQ=31: off
2019-10-09 19:22:13.921 [bus debug] notify request: done
2019-10-09 19:22:13.921 [bus debug] read res: 01f0
2019-10-09 19:22:13.921 [main info] read bai Flame: off
2019-10-09 19:22:13.921 [main debug] <<< off
2019-10-09 19:22:13.921 [bus debug] switching from send response ACK to send SYN
2019-10-09 19:22:13.921 [network info] [00009] connection closed


teraz z crona

root@OpenWrt:~# tail /tmp/log_ebus.txt

2019-10-09 19:22:00
ERR: element not found

root@OpenWrt:~#

I log
/tmp/log/ebusd.log

2019-10-09 19:22:00.385 [network info] [00007] client connection opened 127.0.0.1
2019-10-09 19:22:00.385 [main debug] >>> read -f Flame







2019-10-09 19:22:00.385 [main debug] <<< ERR: element not found
2019-10-09 19:22:00.385 [network debug] [00007] wait for result
2019-10-09 19:22:00.386 [main debug] >>>










2019-10-09 19:22:00.386 [main debug] <<< ERR: command not found
2019-10-09 19:22:00.386 [network debug] [00007] wait for result
2019-10-09 19:22:00.386 [network info] [00007] connection closed

45

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Ok, jestem troszkę mądrzejszy.
To nie wina crona bo zrobiłem skrypt zapetlony i takie jaja są:

skrypt

#!/bin/sh 

while true
do
    echo $(date "+%Y-%m-%d %H:%M:%S") "*" $(/usr/bin/ebusctl read -f "FlowTemp") >> /tmp/log/ebusd2.log
    sleep 10
done 

odpalam na konsoli No1

root@OpenWrt:~# /etc/ebusd/test.sh &
root@OpenWrt:~#

na konsoli No2

root@OpenWrt:~# tail -f /tmp/log/ebusd2.log
2019-10-09 22:45:39 * 20.38;ok
2019-10-09 22:45:49 * 20.38;ok
2019-10-09 22:45:59 * 20.38;ok
2019-10-09 22:46:10 * 20.38;ok
2019-10-09 22:46:20 * 20.38;ok
2019-10-09 22:46:30 * 20.38;ok
2019-10-09 22:46:40 * 20.38;ok
2019-10-09 22:46:50 * 20.38;ok
2019-10-09 22:47:00 * 20.38;ok
2019-10-09 22:47:11 * 20.38;ok
2019-10-09 22:47:21 * ERR: element not found    <-------------- exit na konsoli No1
2019-10-09 22:47:31 * ERR: element not found
2019-10-09 22:47:41 * ERR: element not found
2019-10-09 22:47:51 * ERR: element not found
2019-10-09 22:48:01 * ERR: element not found
2019-10-09 22:48:11 * ERR: element not found
2019-10-09 22:48:21 * ERR: element not found
2019-10-09 22:48:31 * ERR: element not found

Po zamknięciu połaczenia na No1, sypie błędami.

46 (edytowany przez kofec 2019-10-10 07:18:04)

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

To może przetestuj "screen" albo powłoke bash (bash -ce 'ls')
Wydaje się ze ktoś ma podobny problem:
https://github.com/john30/ebusd/issues/298

47

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

kofec napisał/a:

To może przetestuj "screen" albo powłoke bash (bash -ce 'ls')
Wydaje się ze ktoś ma podobny problem:
https://github.com/john30/ebusd/issues/298


Dzięki, świetny pomysł z tym screen, działa elegancko :-)
P. S. Próbowałem skompilować tego domoticza z Twojego gita, ale nie mogę go odnaleść w make menuconfig. Powunien być w Utilities a nie ma, za to openzwave się pojawił

48

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Musisz najpierw wybrać/zaznaczyć pakiety libmosquitto-ssl lub libmosquitto-nossl oraz libmosquittopp.

49 (edytowany przez bizonx 2019-10-10 17:11:23)

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

kofec napisał/a:

Musisz najpierw wybrać/zaznaczyć pakiety libmosquitto-ssl lub libmosquitto-nossl oraz libmosquittopp.

Stokrotne dzięki. Niestety compilacja nie pomogła.

root@OpenWrt:~# opkg install /tmp/domoticz_4.9700-3_arm_cortex-a9_vfpv3.ipk
Installing domoticz (4.9700-3) to root...
Configuring domoticz.
root@OpenWrt:~# domoticz
Error loading shared library libboost_thread.so.1.71.0: No such file or directory (needed by /usr/bin/domoticz)
Error loading shared library libboost_system.so.1.71.0: No such file or directory (needed by /usr/bin/domoticz)
Error loading shared library libboost_chrono.so.1.71.0: No such file or directory (needed by /usr/bin/domoticz)
Error loading shared library libboost_date_time.so.1.71.0: No such file or directory (needed by /usr/bin/domoticz)
Error loading shared library libboost_atomic.so.1.71.0: No such file or directory (needed by /usr/bin/domoticz)
Error relocating /usr/bin/domoticz: _ZN5boost6thread21start_thread_noexceptEv: symbol not found
Error relocating /usr/bin/domoticz: _ZN5boost6thread6detachEv: symbol not found
Error relocating /usr/bin/domoticz: _ZN5boost6detail16thread_data_baseD2Ev: symbol not found
Error relocating /usr/bin/domoticz: _ZN5boost6thread13native_handleEv: symbol not found
Error relocating /usr/bin/domoticz: _ZN5boost6thread9interruptEv: symbol not found
Error relocating /usr/bin/domoticz: _ZN5boost11this_thread18interruption_pointEv: symbol not found
Error relocating /usr/bin/domoticz: _ZN5boost6threadC1Ev: symbol not found
Error relocating /usr/bin/domoticz: _ZN5boost6detail23get_current_thread_dataEv: symbol not found
Error relocating /usr/bin/domoticz: _ZN5boost11this_thread20disable_interruptionC1Ev: symbol not found
Error relocating /usr/bin/domoticz: _ZN5boost11this_thread20disable_interruptionD1Ev: symbol not found
Error relocating /usr/bin/domoticz: _ZN5boost6thread13join_noexceptEv: symbol not found
Error relocating /usr/bin/domoticz: _ZN5boost6thread26do_try_join_until_noexceptERKNS_6detail23mono_platform_timepointERb: symbol not found
Error relocating /usr/bin/domoticz: _ZTVN5boost6detail16thread_data_baseE: symbol not found
Error relocating /usr/bin/domoticz: _ZTIN5boost6detail16thread_data_baseE: symbol not found
root@OpenWrt:~#
root@OpenWrt:~# opkg info boost
Package: boost
Version: 1.71.0-3

Nie z ręki wiem :-), ale to też nie pomaga

root@OpenWrt:~# /etc/init.d/domoticz enable
root@OpenWrt:~# /etc/init.d/domoticz start
root@OpenWrt:~# ps | grep [d]omoticz
root@OpenWrt:~#

50

Odp: Domoticz + ebusd + Vaillant (Prośba o Cross Compile)

Przeinstaluj boosta bo ci go nie widzi.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.