MQTT Probleme zwei openHAB´s verbinden

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von udo1toni »

Das sähe dann so aus:

Code: Alles auswählen

Switch HeizungPferdewasser
  "Heizung Pferdewasser"
  <switch>
  (gPonystall)
  {channel="shelly:shelly1pm:84cca8a86d0d:relay#output", autoupdate="false"}
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

favorit626
Beiträge: 35
Registriert: 15. Mai 2016 22:38
Answers: 0

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von favorit626 »

udo1toni hat geschrieben » Gestern 18:17
....Dann müsste eine entsprechende Überwachung den Stromfluss auswerten. Hat der Shelly Strommessung...
Da hast Du schlafende Hund geweckt, da ich das Buch von Marianne Spiller "Smart Home mit openHAB 2"
besitze, und meine Waschmaschine danach auch "smart" gemacht habe, was auch einigermaßen funktiomiert, dachte ich mir, vielleicht kann man
das ja irgendwie verwenden. Nun habe ich mir aus der Waschmaschinen-rule eine für die Pferdewasser Heizung
gebaut, zwar recht stümperhaft, geht sicherlich wesentlich eleganter aber es funktioniert.

Code: Alles auswählen

rule "Kontrolllampe Heizstab Pferdewasser !"
when
  Item Shellypm1_Leistung changed
then
  var Number Aktuelle_Leistung = Shellypm1_Leistung.state as DecimalType
  var Number Maximale_Leistung = Shellypm1_total_Leistung.state as DecimalType

  if(Aktuelle_Leistung < 0.2) {
    KontrolleHeizungPferdew.sendCommand(OFF)
    PferdewasserHeizstab_Zustand.postUpdate("... ist aus!")
      } else {
    if(Aktuelle_Leistung > Maximale_Leistung) {
      Maximale_Leistung = Aktuelle_Leistung
      //Waschmaschine_Maximal.postUpdate(Maximale_Leistung)
      //logInfo("Waschmaschine", "Maximale Leistung: {}W.", Maximale_Leistung)
      }

    if(Aktuelle_Leistung > 5) {
      if(Maximale_Leistung > 5) {
        KontrolleHeizungPferdew.sendCommand(ON)
        logInfo("Heizstab Pferdewasser ist eingeschaltet.")
        sendTelegram("Openhabknut2", "Heizstab Pferdewasser ist eingeschaltet.")
        PferdewasserHeizstab_Zustand.postUpdate("... ist eingeschaltet.")
      }
     }
 }
 end
bis auf die Fehlermeldung im Log, wo ich nichts mit anfangen kann.
2021-02-24 10:47:54.758 [vent.ItemStateChangedEvent] - Shellypm1_Leistung changed from 2073.5 to 2075.9

2021-02-24 10:47:54.777 [ome.event.ItemCommandEvent] - Item 'KontrolleHeizungPferdew' received command ON

2021-02-24 10:47:54.801 [nt.ItemStatePredictedEvent] - KontrolleHeizungPferdew predicted to become ON

==> /var/log/openhab2/openhab.log <==

2021-02-24 10:48:09.775 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Kontrolllampe Heizstab Pferdewasser !': An error occurred during the script execution: index=1, size=1

==> /var/log/openhab2/events.log <==

2021-02-24 10:48:09.754 [vent.ItemStateChangedEvent] - Shellypm1_Leistung changed from 2075.9 to 2083.3

2021-02-24 10:48:09.762 [vent.ItemStateChangedEvent] - Shellypm1_total_Leistung changed from 0.308 to 0.343

2021-02-24 10:48:09.776 [ome.event.ItemCommandEvent] - Item 'KontrolleHeizungPferdew' received command ON

2021-02-24 10:48:09.805 [nt.ItemStatePredictedEvent] - KontrolleHeizungPferdew predicted to become ON

2021-02-24 10:48:15.625 [vent.ItemStateChangedEvent] - Current_DateTime changed from 2021-02-24T10:47:15.596+0100 to 2021-02-24T10:48:15.599+0100

2021-02-24 10:48:15.628 [vent.ItemStateChangedEvent] - Date changed from 2021-02-24T10:47:45.329+0100 to 2021-02-24T10:48:15.599+0100

==> /var/log/openhab2/openhab.log <==

2021-02-24 10:48:21.791 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Kontrolllampe Heizstab Pferdewasser !': An error occurred during the script execution: index=1, size=1

==> /var/log/openhab2/events.log <==

2021-02-24 10:48:21.769 [vent.ItemStateChangedEvent] - Shellypm1_Leistung changed from 2083.3 to 2088.3

2021-02-24 10:48:21.792 [ome.event.ItemCommandEvent] - Item 'KontrolleHeizungPferdew' received command ON

2021-02-24 10:48:21.811 [nt.ItemStatePredictedEvent] - KontrolleHeizungPferdew predicted to become ON

==> /var/log/openhab2/openhab.log <==

2021-02-24 10:48:34.803 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Kontrolllampe Heizstab Pferdewasser !': An error occurred during the script execution: index=1, size=1

==> /var/log/openhab2/events.log <==

2021-02-24 10:48:34.783 [vent.ItemStateChangedEvent] - Shellypm1_Leistung changed from 2088.3 to 2080.9

2021-02-24 10:48:34.804 [ome.event.ItemCommandEvent] - Item 'KontrolleHeizungPferdew' received command ON

2021-02-24 10:48:34.835 [nt.ItemStatePredictedEvent] - KontrolleHeizungPferdew predicted to become ON

==> /var/log/openhab2/openhab.log <==

2021-02-24 10:48:36.805 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Kontrolllampe Heizstab Pferdewasser !': An error occurred during the script execution: index=1, size=1

==> /var/log/openhab2/events.log <==

2021-02-24 10:48:36.784 [vent.ItemStateChangedEvent] - Shellypm1_Leistung changed from 2080.9 to 2083.3

2021-02-24 10:48:36.805 [ome.event.ItemCommandEvent] - Item 'KontrolleHeizungPferdew' received command ON

2021-02-24 10:48:36.840 [nt.ItemStatePredictedEvent] - KontrolleHeizungPferdew predicted to become ON
Falls jemand eine Idee hat?

gruß
Knut

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von peter-pan »

favorit626 hat geschrieben: 24. Feb 2021 11:07 bis auf die Fehlermeldung im Log, wo ich nichts mit anfangen kann.
Hallo Knut,
evtl. hab ich zwei Punkte die kritisch sind:
favorit626 hat geschrieben: 24. Feb 2021 11:07 logInfo("Heizstab Pferdewasser ist eingeschaltet.")
Das logInfo braucht zwei String-Parameter, also etwa so

Code: Alles auswählen

logInfo("Pferdekontrolle","Heizstab Pferdewasser ist eingeschaltet.")
Zu dem "sendTelegram" fehlt wahrscheinlich noch die Definition:

Code: Alles auswählen

{
	"resource": "/w:/rules/homematic.rules",
	"owner": "_generated_diagnostic_collection_name_#0",
	"code": "org.eclipse.xtext.diagnostics.Diagnostic.Linking",
	"severity": 8,
	"message": "The method sendTelegram(String, String) is undefined",
	"startLineNumber":xxx,
	"startColumn": y,
	"endLineNumber":xxx,
	"endColumn": zz
}
VSC gibt mir hierzu diese Fehlermeldung aus.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

favorit626
Beiträge: 35
Registriert: 15. Mai 2016 22:38
Answers: 0

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von favorit626 »

peter-pan » Heute 12:25
Das logInfo braucht zwei String-Parameter, also etwa so

Code: Alles auswählen

logInfo("Pferdekontrolle","Heizstab Pferdewasser ist eingeschaltet.")
Danke, das war der Fehler, Fehlermeldung ist weg.
peter-pan » Heute 12:25
Zu dem "sendTelegram" fehlt wahrscheinlich noch die Definition:
Das scheint Ok zu sein das funktioniert einwandfrei.

favorit626
Beiträge: 35
Registriert: 15. Mai 2016 22:38
Answers: 0

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von favorit626 »

So, jetzt habe ich die "Heizungskontroll-RULE" noch mal ganz neu aufgelegt, und zwar nach dem gleichen Prinzip
wie die RULE für die Heizug von Udo

Code: Alles auswählen

rule "Kontrolllampe Heizstab Pferdewasser !"
when
    Item Shellypm1_Leistung changed
then
    var Number nWatt = 2300
    if(Shellypm1_Leistung.state instanceof Number)
        nWatt = Shellypm1_Leistung.state as Number
    var Soll = KontrolleHeizungPferdew.state
    if(nWatt > 5)
        Soll = ON
    if(nWatt < 2)
        Soll = OFF
    if(KontrolleHeizungPferdew.state != Soll) {
        var strMessage = "Heizung Pferdewasser ist "
        strMessage = strMessage + if(Soll == OFF) "ausgeschaltet" else "eingeschaltet"
        //strMessage = strMessage + " °C!"
        sendTelegram("Openhabknut2", strMessage)
        logInfo("heat", strMessage) 
        KontrolleHeizungPferdew.sendCommand(Soll.toString)
    }
 end
und es funktioniert super.
log:
2021-02-24 17:01:58.498 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'Pferdewasser.rules'

==> /var/log/openhab2/events.log <==

2021-02-24 17:02:01.659 [ome.event.ItemCommandEvent] - Item 'HeizungPferdewasser' received command ON

2021-02-24 17:02:02.046 [vent.ItemStateChangedEvent] - HeizungPferdewasser changed from OFF to ON

2021-02-24 17:02:05.161 [vent.ItemStateChangedEvent] - Shellypm1_Signalstaerke changed from 0 to 1

2021-02-24 17:02:05.976 [vent.ItemStateChangedEvent] - Shellypm1_Leistung changed from 0.0 to 2054.0

==> /var/log/openhab2/openhab.log <==

2021-02-24 17:02:06.893 [INFO ] [.eclipse.smarthome.model.script.heat] - Heizung Pferdewasser ist eingeschaltet

==> /var/log/openhab2/events.log <==

2021-02-24 17:02:06.896 [ome.event.ItemCommandEvent] - Item 'KontrolleHeizungPferdew' received command ON

2021-02-24 17:02:07.210 [vent.ItemStateChangedEvent] - KontrolleHeizungPferdew changed from OFF to ON

2021-02-24 17:02:08.373 [vent.ItemStateChangedEvent] - Shellypm1_Leistung changed from 2054.0 to 2051.6

2021-02-24 17:02:11.589 [vent.ItemStateChangedEvent] - Shellypm1_Signalstaerke changed from 1 to 0

2021-02-24 17:02:14.810 [vent.ItemStateChangedEvent] - Shellypm1_Leistung changed from 2051.6 to 2046.8

2021-02-24 17:02:20.475 [vent.ItemStateChangedEvent] - Shelly1_KontrolleHeizung_Signalstaerke changed from 2 to 1

2021-02-24 17:02:24.049 [vent.ItemStateChangedEvent] - Shellypm1_Leistung changed from 2046.8 to 2044.4

2021-02-24 17:02:35.988 [vent.ItemStateChangedEvent] - Shellypm1_Leistung changed from 2044.4 to 2049.2

2021-02-24 17:02:36.290 [vent.ItemStateChangedEvent] - Shellypm1_Signalstaerke changed from 0 to 1
und ausschalten :
2021-02-24 17:08:42.470 [vent.ItemStateChangedEvent] - Shellypm1_Leistung changed from 2058.8 to 2056.4

==> /var/log/openhab2/openhab.log <==

2021-02-24 17:08:48.698 [INFO ] [.eclipse.smarthome.model.script.heat] - Pferdewasser hat mehr als 10 °C!

2021-02-24 17:08:49.211 [INFO ] [.eclipse.smarthome.model.script.heat] - Heizung Pferdewasser ist ausgeschaltet

==> /var/log/openhab2/events.log <==

2021-02-24 17:08:48.393 [vent.ItemStateChangedEvent] - Wassertemp_PferdestallTCP changed from 17.6 to 17.8

2021-02-24 17:08:48.702 [ome.event.ItemCommandEvent] - Item 'HeizungPferdewasser' received command OFF

2021-02-24 17:08:49.005 [vent.ItemStateChangedEvent] - Shellypm1_Leistung changed from 2056.4 to 0.0

2021-02-24 17:08:49.014 [vent.ItemStateChangedEvent] - HeizungPferdewasser changed from ON to OFF

2021-02-24 17:08:49.214 [ome.event.ItemCommandEvent] - Item 'KontrolleHeizungPferdew' received command OFF

2021-02-24 17:08:49.540 [vent.ItemStateChangedEvent] - KontrolleHeizungPferdew changed from ON to OFF

2021-02-24 17:08:55.053 [vent.ItemStateChangedEvent] - Shelly1_KontrolleHeizung_Signalstaerke changed from 1 to 2

2021-02-24 17:09:02.094 [vent.ItemStateChangedEvent] - Shellypm1_total_Leistung changed from 0.205 to 0.240

2021-02-24 17:09:10.264 [vent.ItemStateChangedEvent] - Shelly1_KontrolleHeizung_Signalstaerke changed from 2 to 1

2021-02-24 17:09:18.390 [vent.ItemStateChangedEvent] - Wassertemp_PferdestallTCP changed from 17.8 to 17.9

2021-02-24 17:09:25.439 [vent.ItemStateChangedEvent] - Shelly1_KontrolleHeizung_Signalstaerke changed from 1 to 2
Jeztz bin ich voll begeistert

Danke euch beiden für vorzügliche Hilfe.

Gruß
Knut

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von udo1toni »

So zum Hintergrund: Logmeldungen gibt es ja in verschiedenen Leveln, das wird über den Befehl definiert, deshalb gibt es logDebug(), logInfo(), logWarn() und logError().

Eine Eigenheit von Loggern ist, dass der Anwender zur Laufzeit wählen kann, wieviel geloggt wird. Man kann also bestimmen, dass gar nichts geloggt wird, dass nur Logs der Stufe Error geloggt werden, dass Meldungen der Stufen Warn und Error geloggt werden, dass Meldungen der Stufen Info, Warn und Error geloggt werden oder dass alle Meldungen (also auch Debug) geloggt werden. Wie gesagt, das geht während das Programm läuft.
Und es kommt noch besser, man kann das extrem feingranular steuern, für jede Rule einzeln, wenn es sein muss (genauso wie für jedes einzelne Binding!). Dazu müssen aber die Logmeldungen einer Kategorie zugewiesen werden. Das geschieht über den Loggernamen. Der Loggername ist der erste String, der angegeben wird und erscheint im Log rechtsbündig bis zu einer bestimmten Länge (25 Zeichen? Bin grade unsicher...) in eckigen Klammern. Das ist NICHT Teil der Meldung! Die Meldung steht Linksbündig hinter dem - nach der ersten eckigen schließenden Klammer. :) Der Loggername ist nicht optional, genauso wie ein Meldetext.


Gesendet von iPad mit Tapatalk
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2773
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von peter-pan »

favorit626 hat geschrieben: 24. Feb 2021 15:53 Das scheint Ok zu sein das funktioniert einwandfrei.
Da ich dieses Binding bzw. diese Funktion nicht benutze, habe ich mich hier auf die VSC-Meldungen verlassen. Ich habe aber noch mal kurz im Telegram-Binding (OH-V2) quer gelesen. Kann es sein, dass du noch die Binding-Version V1 bzw. eine Action-Version dazu benutzt?

Hier mal ein Link zur V2-Verison(Action). Und ein Link, zu einem Beispiel, wie man das in einer Rule "händeln" kann.

Sollte das bei dir der Fall sein (Binding-Version V1), solltest du dir überlegen, ob du nicht auf die aktuelle Version umsteigen willst, da V1 unter OpenHAB 3 nicht mehr funktioniert. Ansonsten hat sich's erledigt, da es ja zu deiner Zufriedenheit klappt. ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

favorit626
Beiträge: 35
Registriert: 15. Mai 2016 22:38
Answers: 0

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von favorit626 »

Hallo peter-pan,
das Telegram Binding ist 2.5.12, aber das Telegram Action ist tatsählich noch 1.1.... aber Meldungen über Telegram schicken
läuft noch. Früher oder später werde ich dann auch wohl Schritt für Schritt auf OH3 um steigen, und dann wird Problem für Problem gelöst.
Aber trotzdem Danke für die Bemühungen.

Gruß
Knut

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: MQTT Probleme zwei openHAB´s verbinden

Beitrag von udo1toni »

Die V1 Action sollte man nicht mehr verwenden, das V2 Binding hat eine entsprechende Action eingebaut, sie ist lediglich leicht anders aufzurufen (Mans muss einen Handle erstellen, in der Form TelegramAction = getAction(“telegram”,...)


Gesendet von iPad mit Tapatalk
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten