Seite 1 von 2

FOSHKplugin: Einbinden externer Datenquellen - Sensoren emulieren

Verfasst: 14 Jun 2025, 15:38
von olicat
Hi!
Ich würde gerne mit dem Homematic IP Regensensor das srain_piezo des (nicht vorhandenen) WS90 bzw. der Konsole an FOSHKplugin nachstellen um die Regendauer besser zu erfassen, da der (vorhandene) WH40H systembedingt zu träge reagiert.
Es ist ueberhaupt kein Problem, Werte externer Datenquellen in FOSHKplugin zu verarbeiten oder Ecowitt-Sensoren zu emulieren, sofern man diese Werte hat (darauf zugreifen kann).
Siehe dazu die Exec-Funktion sowie die Script-Funktion.

Wie kannst Du denn den Status Deines Sensors abfragen? Geht das irgendwie per http?
Der hinzuzufuegende Key waere dann tatsaechlich srain_piezo - wobei 0=es regnet nicht und 1=es regnet:

Code: Alles auswählen

#!/bin/bash
# make script executable - chmod ug+x addScript.sh
# use in config file as Export\ADD_SCRIPT = ./addScript.sh

# the original output data from FOSHKplugin
instr="$@"

# if sensor outputs 0 for no rain and 1 for is raining via http call
state=`curl -s http://192.168.15.186/rainstate`
if [ ! -z "${state}" ]; then statestring="&srain_piezo=${state}"; fi

# merge the original string with the new components
echo "${instr}${statestring}"
Oliver

Re: FOSHKplugin: Einbinden externer Datenquellen - Sensoren emulieren

Verfasst: 15 Jun 2025, 12:47
von rsgaf
Hi Oliver,

vielen Dank die Eröffnung des neuen Themas.

Was ich bis jetzt herausgefunden habe, müsste die Homeassistant Abfrage per http über REST API möglich sein:
https://developers.home-assistant.io/docs/api/rest/
Die Abfrage erfolgt anscheinend per Script.

Andere Alternative wäre die Abfrage aus Homematic CCU3 per http:
Die Abfrage mit

Code: Alles auswählen

http://[IP-Adresse der CCU]/addons/xmlapi/state.cgi?sid=INSERTTOKEN&datapoint_id=HmIP-RF.002762698ABB74:1.RAINING
ergibt die Antwort

Code: Alles auswählen

-<state>
<datapoint ise_id="HmIP-RF.002762698ABB74:1.RAINING" value="false"/>
</state>
Bei Regen müsste dann enstprechend "true" ausgegeben werden.

Ich hoffe, das hilft weiter.

Re: FOSHKplugin: Einbinden externer Datenquellen - Sensoren emulieren

Verfasst: 15 Jun 2025, 13:19
von olicat
Hi!

Dann wuerde ich das wohl so versuchen:

Code: Alles auswählen

#!/bin/bash
# name this script addScript.sh and place it in the FOSHKplugin directory
# make script executable - chmod ug+x addScript.sh
# use in config file as Export\ADD_SCRIPT = ./addScript.sh

# the original output data from FOSHKplugin
instr="$@"

# address to gather the state from
address="http://foshkplugin.phantasoft.de/temp/rsgaf.html?sid=INSERTTOKEN&datapoint_id=HmIP-RF.002762698ABB74:1.RAINING

# if sensor outputs 0 for no rain and 1 for is raining via http call
statetext=`curl -s $address`

if [ ! -z "${statetext}" ]; then 
  if [[ $statetext == *"value=\"true\""* ]]; then
    statestring="&srain_piezo=1"
  else
    statestring="&srain_piezo=0"
  fi
fi

# merge the original string with the new components
echo "${instr}${statestring}"
Du musst address natuerlich passend mit Deiner URL fuellen.
Wird der String value="true" gefunden, wird srain_piezo=1 an den eingehenden String der Konsole angehaengt. Ansonsten ein srain_piezo=0.

Oliver

Re: FOSHKplugin: Einbinden externer Datenquellen - Sensoren emulieren

Verfasst: 15 Jun 2025, 13:52
von rsgaf
Ich habe die addScript.sh erstellt und die URL für die CCU3 Abfrage ergänzt.

Code: Alles auswählen

http://[IP-Adresse der CCU]/addons/xmlapi/state.cgi?sid=INSERTTOKEN&datapoint_id=HmIP-RF.002762698ABB74:1.RAINING
Leider funktioniert die Abfrage nicht, bekomme folgende Meldung:

Code: Alles auswählen

Jun 15 13:44:17 raspberrypi foshkplugin[20735]: curl: no URL specified!
Muss bei der URL zwingend das .html dahinter?
Die Ausgabe im Browser funktioniert nämlich nur ohne.

Re: FOSHKplugin: Einbinden externer Datenquellen - Sensoren emulieren

Verfasst: 15 Jun 2025, 14:09
von Werner
Grenze den kompletten String mit Anführungszeichen ein:

Code: Alles auswählen

"http://[IP-Adresse der CCU]/addons/xmlapi/state.cgi?sid=INSERTTOKEN&datapoint_id=HmIP-RF.002762698ABB74:1.RAINING"
Curl scheitert sonst am "&"

Re: FOSHKplugin: Einbinden externer Datenquellen - Sensoren emulieren

Verfasst: 15 Jun 2025, 14:26
von rsgaf
Das war's, vielen Dank Werner.
Jetzt wird der Regenstatus in Weewx angezeigt.

Vielen Dank Oliver für die Hilfe und das Script!

Jetzt warte ich mal auf den nächsten Regen :D

Re: FOSHKplugin: Einbinden externer Datenquellen - Sensoren emulieren

Verfasst: 15 Jun 2025, 19:49
von rsgaf
Die ersten Regenschauer sind durchgezogen, der Regenstatus in Weewx ändert sich aber leider nicht.
Der Ausgabestring der CCU3 ändert sich auf

Code: Alles auswählen

<state>
<datapoint ise_id="HmIP-RF.002762698ABB74:1.RAINING" value="true"/>
</state>
das Script gibt aber dauerhaft srain_piezo=0 aus.

Kann es sein, dass der Status aus der URL nicht erkannt wird?

Re: FOSHKplugin: Einbinden externer Datenquellen - Sensoren emulieren

Verfasst: 15 Jun 2025, 20:42
von olicat
Hm,

in meiner Versuchsdatei unter

Code: Alles auswählen

address="http://foshkplugin.phantasoft.de/temp/rsgaf.html?sid=INSERTTOKEN&datapoint_id=HmIP-RF.002762698ABB74:1.RAINING
klappt das tadellos.
Es wird im Script ja auch nur geprueft, ob der Substring value="true" in der Ausgabe von curl enthalten ist. Falls ja wird srain_piezo=1 gesetzt.

Oliver

Re: FOSHKplugin: Einbinden externer Datenquellen - Sensoren emulieren

Verfasst: 15 Jun 2025, 21:44
von rsgaf
Kann es eventuell daran liegen, dass die Ausgabe in XML erfolgt?

Re: FOSHKplugin: Einbinden externer Datenquellen - Sensoren emulieren

Verfasst: 16 Jun 2025, 09:38
von olicat
Hi!
Kann es eventuell daran liegen, dass die Ausgabe in XML erfolgt?
Dem Script sollte eigentlich egal sein, welches Format die Ausgabe hat sofern es sich um ASCII handelt, das geparsed werden kann.
Fuege bitte mal vor dem ersten if-Befehl also hinter der statetext-Deklaration) folgende Zeile ein:

Code: Alles auswählen

echo *"$statetext"*
und starte das Script manuell auf der Konsole:

Code: Alles auswählen

addScript.sh dies=das&jenes=nix
und poste das Ergebnis.
Danke!

Oliver