Seite 1 von 1
Homemmatic thing wird nicht regelmäßig aktualisiert
Verfasst: 17. Jul 2025 08:48
von rebell21
ich habe ein thing GATEWAY_EXTRAS zum Auslesen von Werten aus der RaspberryMatic manuell angelegt. Das neue Thing GATEWAY_EXTRAS ist verknüpft mit meiner Homematic Bridge. Diese Bridge scheint zu funktionieren, dann 10 andere Homematic devices werden korrekt aus der RaspberryMatic Installation über diese Bridge regelmäßig aktualisiert. Dieses thing soll vier neue Systemvariablen aus RaspberryMatic auslesen und in openhab anzeigen. Das funktioniert auch soweit. Aber das thing wird nicht aktualisiert bei Änderungen der Systemvariablen in RaspberryMatic. Es wird beim start von Openhab einmal ausgelesen und immer dann, wenn ich die Bridge neu starte. Dann werden die Werte korrekt ausgelesen in openhab angezeigt und stimmen mit den Werten in RaspberryMatic überein.
Screenshot_20250717_085340.jpg
Ich habe bereits eine per cron getriggerte Rule mit "Reload_all from Gateway ON" erstellt. Aber das hat nicht geholfen. Im log viewer sehe ich, dass dieses GATEWAY_EXTRAS nie auftaucht.
Es gibt noch ein zweites GATEWAY_EXTRAS thing , das vom Discovery früher mal erzeugt wurde. Ich nutze das nur, um das normale homematic interface zu triggern (send cemand on to RELOAD ALL from Gateway). Darf man keine zwei things GATEWAY_EXTRAS mit unterschiedlichen UIDs aber gleicher Bridge haben ?
Re: Homemmatic thing wird nicht regelmäßig aktualisiert
Verfasst: 17. Jul 2025 10:39
von rbeudel
Wahrscheinlich weis die CCU dann nicht an wohin sie die Änderung senden soll. Schon mal diese Methode ausprobiert:
As_Temp natürlich gegen eine gültige Variable ersetzen. Auf die Dauer würde ich aber mal darüber nachdenken, homematic komplett zu deinstallieren, cache leeren neu booten um eine saubere Installation zu bekommen.
Re: Homemmatic thing wird nicht regelmäßig aktualisiert
Verfasst: 17. Jul 2025 11:40
von rebell21
Danke,
wo soll ich diese Methode denn einfügen ? Im thing oder item ? In der Rule, in der der ich RELOAD ALL FROM Gateway triggere ?
Soll ich ein Script schreiben, was diesen Befehl enthält und welches von der Rule aufgerufen wird ?
Re: Homemmatic thing wird nicht regelmäßig aktualisiert
Verfasst: 17. Jul 2025 13:44
von rebell21
ich konnte ein script schreiben, welches aus einer rule per Trigger aufgerufen wird.
items.getItem('SonnenscheinHeute').sendCommand('REFRESH') hat bei mir nicht funktioniert. Ich habe sendCommand(item,command) nehmen müssen
Code: Alles auswählen
//sendCommand(Gateway_extras_Variablen_und_Scripte_1_RegenHeute,'REFRESH');
// sendCommand(Gateway_extras_Variablen_und_Scripte_1_RegenGestern,'REFRESH');
// sendCommand(Gateway_extras_Variablen_und_Scripte_1_SonnenscheinGestern,'REFRESH');
sendCommand(Gateway_extras_Variablen_und_Scripte_1_SonnenscheinHeute,'REFRESH');
Die Ausführung des scriptes sehe ich auch im log viewer
Screenshot_20250717_133955.jpg
Aber der Wert des Items ändert sich trotzdem nicht. Der Wert ändert sich nur , wenn ich die Bridge neu starte.
Und strange, ich erhalte Fehlermeldungen im log viewer, wenn ich alle vier sendCommands im skript habe. Hier sind die erst drei auskommentiert und es läuft durch, allerdings ohne Aktualisierung der items. Wenn ich die Auskommentierung der ersten drei Zeilen herausnehme, hagelt es Fehler im logviewer
Re: Homemmatic thing wird nicht regelmäßig aktualisiert
Verfasst: 17. Jul 2025 14:42
von peter-pan
Hallo hier mal ein kleine DSL-Regel, die ich für meine Alarm-Sirene benutze in Verbindung mit dem "sendCommand".
Vielleicht dient dir das als Testvorlage.
Code: Alles auswählen
import org.openhab.core.model.script.ScriptServiceUtil
rule "Wasseralarmsirene"
when
Member of gWatAlTrig changed from OFF to ON
then
var GenericItem itemTemp = ScriptServiceUtil.getItemRegistry.getItem(triggeringItemName) as GenericItem // Initialize Generic Item
var strLocation = getLocation(itemTemp).label // Location Label ermitteln
var vTriggerString = triggeringItem.name + " - " + triggeringItem.label + " - " + strLocation
sendCommand(ASIR2_Sirene_3OPTICALALARMSELECTION,"BLINKING_ALTERNATELY_REPEATING")
sendCommand(ASIR2_Sirene_3ACOUSTICALARMSELECTION,"FREQUENCY_ALTERNATING_LOW_MID_HIGH")
sendCommand(ASIR2_Sirene_3DURATIONUNIT,"S")
sendCommand(ASIR2_Sirene_3DURATIONVALUE,15)
logInfo("Alarm-Sirene","Achtung WasserSensor hat ausgelöst {}", vTriggerString)
val mailActions = getActions("mail","mail:smtp:tonline-smtp")
mailActions.sendMail("peter.pan@google.de", "Wasser-Alarm", "OH4 - es wird nass (Wasser-Alarm): " + vTriggerString)
end
Wie du siehst, benutze ich doppelte Hochkommas für den Befehlsparameter, ausser bei einem numerischen Wert.
P.S.: das Beispiel im englischen
Forum benutzt auch keine Hochkommas
Re: Homemmatic thing wird nicht regelmäßig aktualisiert
Verfasst: 17. Jul 2025 15:34
von rbeudel
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
cronExpression: 0 0/5 * * * ? *
type: timer.GenericCronTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
blockSource: <xml xmlns="https://developers.google.com/blockly/xml"><block
type="oh_event" id="zd)yJbc*+n;5DJ:jPmc$" x="80" y="82"><field
name="eventType">sendCommand</field><value name="value"><shadow
type="text" id="+|(Dm~gl?E^nEps;4?R7"><field
name="TEXT">value</field></shadow><block type="text"
id="E@@SscqSB5jy{`(3.Gxt"><field
name="TEXT">REFRESH</field></block></value><value
name="itemName"><shadow type="oh_item"
id="[sI^imrU2?##PSgrIg2;"><mutation itemName="MyItem"
itemLabel="MyItem"></mutation><field
name="itemName">MyItem</field></shadow><block type="oh_item"
id="f=BRcK-77?h#d-E?1p2s"><mutation itemName="As_Temp" itemLabel="Büro
Temperatur"></mutation><field
name="itemName">As_Temp</field></block></value></block></xml>
type: application/javascript
script: |
items.getItem('As_Temp').sendCommand('REFRESH');
type: script.ScriptAction
Das ist der komplette mit blockly geschriebene code. Geht mit der UI.
Da fällt mir noch ein, es reicht eine Variabele, die anderen werden mit aktualisiert.
Re: Homemmatic thing wird nicht regelmäßig aktualisiert
Verfasst: 17. Jul 2025 16:35
von rebell21
die Lösung war:
Ich habe alle things Gateway_extras gelöscht. Ich hatte nämlich zwei. Damit kommt openhab nicht klar. Dann hat das Discovery ein neues Gateway_extras erkannt. Das hab ich erzeugt, die bridge verlinkt, die existierenden Items verlinkt und nun funktioniert die Aktualisierung jede Minute per skript aus einer Rule per cron jede Minute einmal getriggert
hier ist das Skript
Code: Alles auswählen
Gateway_extras_Variablen_und_Scripte_1_SonnenscheinHeute.sendCommand("REFRESH")
sendCommand(Gateway_extras_Variablen_und_Scripte_1_RegenHeute,REFRESH);
Beide Syntaxschreibweisen funktionieren
Re: Homemmatic thing wird nicht regelmäßig aktualisiert
Verfasst: 18. Jul 2025 13:27
von udo1toni
Eigentlich sollte man möglichst immer die Methode verwenden (Zeile 1), die Action benötigt man allenfalls, wenn man den Namen des Items nur als String vorliegen hat (also z.B. weil man ihn "errechnet").
Das Semikolon wird in der DSL (die "alte" Art Rules zu programmieren) nur bei einem einzigen Befehl gebraucht, und das ist der Befehl
return;
Da
REFRESH ein Command ist, sollte es auch ohne Anführungszeichen funktionieren:
Code: Alles auswählen
Gateway_extras_Variablen_und_Scripte_1_SonnenscheinHeute.sendCommand(REFRESH)