hb-rf-eth verbindet sich nach einem Neustart nicht mehr [gelöst]

Debian/Ubuntu basierte CCU

Moderator: Co-Administratoren

Antworten
PaulG4H
Beiträge: 1184
Registriert: 11.08.2011, 10:09

hb-rf-eth verbindet sich nach einem Neustart nicht mehr [gelöst]

Beitrag von PaulG4H » 02.12.2022, 07:28

Hallo deimos,

mir wurde ein hb-rf-eth POE Bausatz zur Verfügung gestellt und ich muss sagen die Hardware und Software des hb-rf-eth ist genial!

Ich habe meinen RPI 3b im Charly Bausatz einfach durch den Adapter ersetzt, das Firmware Update des Gateways war auch sehr einfach.

Aber die Installation unter einem aktuellen Proxmox LXC Container hat weder mit debian noch ubuntu geklappt, weil ich die Kernel Module einfach nicht geladen bekam. Eine Vollvirtualisiertes Debian (QEMU) hatte aber keine Probleme und es läuft soweit auch gut.

Ein größeres Manko ist aber das sich der hb-rf-eth nach einem neustart nicht mehr richtig mit der debmatic verbindet, alle Versuche durch neu starten von einzelnen Services haben zu keinem Erfolg geführt einizig der neustart des debmacti Services selbst bringt das Gateway wieder online.

Ich habe nun zwei bash scripts geschrieben die zum einen eine filesystemwatcher auf das /sys/class/hb-rf-eth/hb-rf-eth/is_connected file setzen und wenn dies auf 0 geht ein weiteres aufruft welches dann prüft ob das Gateway im Netzwerk erreichbar ist und wenn ja prüft ob es mit einer CCU Verbunden ist, wenn nicht startet es den debmatic dienst neu.

Damit ist mein Gateway nun nach einem Stromausfall desselben, sofort wieder erreichbar wenn es am Netzwerk auftaucht und die debmaic verbindet sich wieder.

Hier der zweite Teil des scripts welches prüft ob das Gateway wieder da ist:

Code: Alles auswählen

# Install depencities
#
# apt install jq

# get IP Address of hb-rf-eth module
ip_eth=$(/usr/bin/cat /etc/default/hb_rf_eth | /usr/bin/cut -d "=" -f 2 | /usr/bin/sed -r 's/"//g')

# check if hb-rf-eth is reachable on port 80
/usr/bin/nc -z -v -G5 $ip_eth 80 &> /dev/null
ETH_NW=$?

if [[ $ETH_NW -gt 0 ]]
then
    /usr/bin/echo "hm-rf-eth on ip $ip_eth is reachable through port 80"

    # check if hb-rf-eth is connected to debmatic instance, restart it if not
    ETH=$(/usr/bin/wget -q -O - "http://$ip_eth/sysinfo.json"|/usr/bin/jq '.sysInfo.rawUartRemoteAddress'| /usr/bin/sed -r 's/"//g')
    if [[ ${#ETH} -gt 0 ]]
    then
        /usr/bin/echo "hm-rf-eth connected with debmatic instance"
    else
        /usr/bin/echo "hm-rf-eth not connected with debmatic instance!"
        /usr/bin/echo "hm-rf-eth was offline, restart debmatic.service"
		/usr/bin/systemctl restart debmatic.service
    fi
fi
Der Filesystemwatcher auf das /sys/class Verzeichniss (was eigentlich kein Verzeichniss im Herkömlichen Sinn ist) war der "schönste" weg ohne zu viele events (syslog) filtern zu müssen ob das Gateway weg ist, aber auch nur eine "Notlösung".

Viel schöner wäre es wenn so etwas wie meine Zeilen oben machen, direkt in den debmatic-monitor-hb-rf-eth.service Integriert werden würde. Und es vielleicht auch mit weniger heftigen Mitteln als dem kompletten neustart der debmatic wieder zu einer Verbindung zu bringen könnte.
Zuletzt geändert von PaulG4H am 02.12.2022, 11:59, insgesamt 1-mal geändert.
Apache Reverse Proxy fuer sicheren Zugriff auf die CCU von Unterwegs
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI

Benutzeravatar
deimos
Beiträge: 5383
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 950 Mal
Kontaktdaten:

Re: hb-rf-eth verbindet sich nach einem Neustart nicht mehr

Beitrag von deimos » 02.12.2022, 07:59

Hi,

statt einem eigenen Script hättest du einfach auch ein Script hinter das Event in der CCU legen können, genau dafür ist es da. Das man dann debmatic neu starten muss, liegt einfach daran, dass die Software von eQ-3 nichts für einen Reconnect vorgesehen hat, die geht von einem per GPIO aufgesetztem Funkmodul aus un das kann die Verbindung nicht einfach verlieren, daher habe ich da keine Möglichkeiten. Das ist aber nur dann notwendig, wenn man die HB-RF-ETH komplett vom Strom trennt, einen (kurzen) Disconnect rein auf Netzwerkebene bekommt sie selbstständig wieder hergestellt. Technisch wäre es keine Problem, die Verbindung auch nach einem Stromausfall selbstständig wiederherzustellen, aber da das Funkmodul dann ggf. nicht in dem Status ist, den der multimacd erwartet, wird das bewusst nicht so gemacht.

Viele Grüße
Alex

PaulG4H
Beiträge: 1184
Registriert: 11.08.2011, 10:09

Re: hb-rf-eth verbindet sich nach einem Neustart nicht mehr

Beitrag von PaulG4H » 02.12.2022, 08:09

Hallo Alex,

Vielen Dank für deine Prompte Antwort!

Wie kann ich in der debmatic ein script hinter den Event legen so das dieser ein Update der debmatic "Überlebt"? Oder meinst du einen system exec Aufruf per HM Program (soll man das überhaupt machen --> da war mal ein Böses Problem mit der CCU Firmware wenn man das gemacht hat, und es sollte der cuxd genutzt werden oder)?

Bitte Entschuldige meine vielleicht "blöden" Fragen aber ich habe in meiner CCU seit fast zehn Jahren keine Programme sondern nutze diese nur als Werkzeug zum Anlernen und erstellen der Direktverküpfungen bzw. als GW für meine Smarthome zentralen Software.

Gibt es eine aktuelle Anleitung wie man debmatic in einem Proxmox LXC Container zum laufen bekommt oder ist die zwei Jahre alte im github noch mit den aktuellen Versionen von Proxmox / Debian / Ubuntu nutzbar?

Danke Nochmals und noch einen schönen Tag
Paul
Apache Reverse Proxy fuer sicheren Zugriff auf die CCU von Unterwegs
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI

PaulG4H
Beiträge: 1184
Registriert: 11.08.2011, 10:09

Re: hb-rf-eth verbindet sich nach einem Neustart nicht mehr

Beitrag von PaulG4H » 02.12.2022, 11:58

Hallo,

mit dem System Exec klappt das nun soweit, wenn es jemand testen möchte dann per ssh auf das debmatic system verbinden und als root folgendes ausführen:

Code: Alles auswählen

mkdir /opt/hb-rf-eth_check
Die Datei check.sh Anlegen

Code: Alles auswählen

nano check.sh
in diese folgende Zeilen Kopieren:

Code: Alles auswählen

#!/bin/bash

# Install depencities
#
# apt install jq

# Log Folder
LOG_FOLDER=$(cd "$(/usr/bin/dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )/log

# Log Filename
LOG_FILE=$(/bin/date --iso-8601)_$(/usr/bin/basename "$0").log

# /usr/bin/echo "log to $LOG_FOLDER/$LOG_FILE"

# check Log folder exists
if [ ! -d "$LOG_FOLDER" ]; then
        /bin/mkdir -p "$LOG_FOLDER"
fi

ip_eth=$(/usr/bin/cat /etc/default/hb_rf_eth | /usr/bin/cut -d "=" -f 2 | /usr/bin/sed -r 's/"//g')

# check if hb-rf-eth is reachable on port 80
/usr/bin/nc -z -v -G5 $ip_eth 80 &> /dev/null
ETH_NW=$?

# write all to logfile
exec > >(/usr/bin/ts '[%H:%M:%S] ' | /usr/bin/tee -i -a $LOG_FOLDER/$LOG_FILE)
exec 2>&1

# /usr/bin/echo $ETH_NW

if [[ $ETH_NW -gt 0 ]]
then
    /usr/bin/echo "hm-rf-eth on ip $ip_eth is reachable through port 80"

    # check if hb-rf-eth is connected to debmatic instance, restart it if not
    ETH=$(/usr/bin/wget -q -O - "http://$ip_eth/sysinfo.json"|/usr/bin/jq '.sysInfo.rawUartRemoteAddress'| /usr/bin/sed -r 's/"//g')
    if [[ ${#ETH} -gt 0 ]]
    then
        /usr/bin/echo "hm-rf-eth connected with debmatic instance"
    else
        /usr/bin/echo "hm-rf-eth not connected with debmatic instance!"
        /usr/bin/echo "hm-rf-eth was offline, restart debmatic.service"
                /usr/bin/systemctl restart debmatic.service
    fi
fi
Dann die Datei Ausführbar machen mit

Code: Alles auswählen

chmod +x check.sh
Nun noch in der CCU ein Programm wie dieses Anlegen:
ksnip_20221202-115612.png
mit diesem script :

Code: Alles auswählen

string s_cmd = "/opt/hb-rf-eth_check/check.sh";

string stdout;
string stderr;
system.Exec(s_cmd, &stdout, &stderr); 
Damit wird zwei Minuten nachdem das hb-rf-eth Offline geht das script ausgeführt was dessen Verfügbarkeit prüft und wenn dieses erreichbar ist und nicht mit der CCU Verbunden ist den debmatic Dienst neu Startet.

Wie dies in allen Varianten Funktioniert wird die Zeit zeigen, bzw. würde ich mich über eine Rückmeldung freuen!

Paul
Apache Reverse Proxy fuer sicheren Zugriff auf die CCU von Unterwegs
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI

Antworten

Zurück zu „debmatic“