Abfallkalender Javascript OH3 > OH4

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
technick90
Beiträge: 39
Registriert: 24. Jul 2019 16:56
Answers: 1

Abfallkalender Javascript OH3 > OH4

Beitrag von technick90 »

Hallo,

ich habe nun endlich von OH3 auf OH4 migrieren. Vielen Dank an udo1toni für die Anleitung hier im Forum.

Mein Abfallkalender ist das einzige was noch nicht wieder funktioniert.

Dazu habe ich folgende textbasierte Items:

Code: Alles auswählen

String ABF1_NAME          { channel="http:url:06f8dbd034:ics"[profile="transform:JS", function="abfall_naechste_abholung_name.js"] }
DateTime ABF1_DATE        { channel="http:url:06f8dbd034:ics"[profile="transform:JS", function="abfall_naechste_abholung_datum.js"] }
Das JS Addon habe ich installiert, im Log kommt aber nun folgender Fehler:

Code: Alles auswählen

2023-11-15 18:18:21.070 [ERROR] [.module.script.profile.ScriptProfile] - Neither 'toItemScript' nor 'toHandlerScript' defined in link 'ABF1_NAME -> http:url:06f8dbd034:ics'. Profile will discard all states and commands.
2023-11-15 18:18:21.073 [ERROR] [.module.script.profile.ScriptProfile] - Neither 'toItemScript' nor 'toHandlerScript' defined in link 'ABF1_DATE -> http:url:06f8dbd034:ics'. Profile will discard all states and commands.
Von dem was ich gelesen habe, muss ich wohl den Aufruf der Transform Datei anders gestalten, leider verstehe ich nicht wie.
Kann mir einer erklären was ich tun muss? Gerne dann gleich als UI-basiertes Item.

Gruß

Robert

tim.l
Beiträge: 71
Registriert: 24. Jun 2022 08:16
Answers: 2
Wohnort: Bielefeld
Kontaktdaten:

Re: Abfallkalender Javascript OH3 > OH4

Beitrag von tim.l »

Hallo @technick90,

leider kann ich bei dem JS transform nicht direkt helfen, platziere aber immer wieder gerne meinen müll.io Dienst für openHAB: https://müll.io/integration/openhab Falls du dies benutzen willst und dein Anbieter dort fehlt, lass es mich gerne wissen, dann würde ich diesen ergänzen :)

Beste Grüße,
Tim
Meine openHAB Erfahrungen bei mir im Blog: https://360friends.de/tag/openhab/ ;)

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

Re: Abfallkalender Javascript OH3 > OH4

Beitrag von udo1toni »

Also eigentlich steht in der Fehlermeldung genau drin, was da schief geht :) Parameter fehlen.
Und ein Blick in die offizielle Doku verrät auch, wie das unter openHAB4 zu konfigurieren ist:

Code: Alles auswählen

Number <itemName> { channel="<channelUID>"[profile="transform:JS", toItemScript="decode_json.js", toHandlerScript="encode_json.js" ] }
Hier halt am Beispiel eines Number Items.
Der Punkt ist, dass man die Transformation jetzt in beide Richtungen verwenden kann, da aber mit extrem hoher Wahrscheinlichkeit die Transformation in Empfangsrichtung eine andere ist als in Senderichtung, kann man jetzt zwei Scripte angeben. Deshalb wurde der Parametername geändert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

technick90
Beiträge: 39
Registriert: 24. Jul 2019 16:56
Answers: 1

Re: Abfallkalender Javascript OH3 > OH4

Beitrag von technick90 »

@tim.l
Tatsächlich ist mein Ort (Schwerin, M-V) bisher nicht enthalten.
Ich habe derzeit in meiner Sitemap aber auch nur eine Zeile für alle Tonnen, siehe Screenshot.
Sonst nimmt es mir zu viel Platz weg.

@udo1toni

Sowas habe ich mir schon auch gedacht. Aber es geht trotzdem nicht.

Beispiel:

Code: Alles auswählen

String ABF1_NAME          { channel="http:url:06f8dbd034:ics"[profile="transform:JS", toItemScript="abfall_naechste_abholung_name.js"] }
Egal ob ich toItemScript oder toHandlerScript nehme oder beides, es kommt trotzdem der selbe Fehler im Log.

Müssen vielleicht die Transform-Dateien auch noch angepasst werden? Habe sie mal beigefügt.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Abfallkalender Javascript OH3 > OH4

Beitrag von int5749 »

Hi,

nutzt Du dafür das http-Binding? Ich erledige die Transformation direkt im Thing und habe bisher keine Probleme

Thing

Code: Alles auswählen

/* HTTP Binding */
Bridge http:url:abfallkalender "Abfallkalender" @ "Internet" [
    baseURL="https://www.umwelt-webmedia.de/caldownload/56448759806804803.ics",
    refresh=360,
    ignoreSSLErrors=true,
    commandMethod="GET",
    timeout=3000,
    bufferSize=2048
] {
    Channels:
    Type string   : cABF1_NAME          "Nächste Abholung"       [ stateTransformation="JS:abfall_naechste_abholung_name.js", mode="READONLY"]
    Type datetime : cABF1_DATE          "Datum nächste Abholung" [ stateTransformation="JS:abfall_naechste_abholung_datum.js", mode="READONLY"]
    Type string   : cABFALL_ICAL_heute  "Abholung heute"         [ stateTransformation="JS:abfall_heute.js", mode="READONLY"]
    Type string   : cABFALL_ICAL_morgen "Abholung morgen"        [ stateTransformation="JS:abfall_morgen.js", mode="READONLY"]
}
Items

Code: Alles auswählen

//Abfallkalender
// Nächste Abholung
String ABF1_NAME          "Nächste Abholung [%s]"              (gWasteCollection)  ["Point"]              {channel="http:url:abfallkalender:cABF1_NAME"}
DateTime ABF1_DATE        "Termin: [%1$ta, %1$td.%1$tm.%1$ty]" (gWasteCollection)  ["Point", "Timestamp"] {channel="http:url:abfallkalender:cABF1_DATE"}

//Abfall heute
String ABFALL_ICAL_heute  {channel="http:url:abfallkalender:cABFALL_ICAL_heute"}
Switch ABFALL_AKTIV_heute
String ABFALL_NAME_heute

//Abfall morgen
String ABFALL_ICAL_morgen {channel="http:url:abfallkalender:cABFALL_ICAL_morgen"}
Switch ABFALL_AKTIV_morgen
String ABFALL_NAME_morgen
Die dazu gehörenden Rules hast Du ja sicher? ;-)

Viele Grüße
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

technick90
Beiträge: 39
Registriert: 24. Jul 2019 16:56
Answers: 1

Re: Abfallkalender Javascript OH3 > OH4

Beitrag von technick90 »

@int5749

Vielen Dank! So funktioniert alles wieder!
Rules habe ich keine mehr. Das ging zuletzt irgendwie alles nicht mehr (schon laaaange her), seitdem nutze ich nur noch nächste Abholung und Datum nächste Abholung.
Die Rules waren für Abfall heute und Abfall morgen oder?

Viele Grüße

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Abfallkalender Javascript OH3 > OH4

Beitrag von int5749 »

technick90 hat geschrieben: 17. Nov 2023 07:01 Vielen Dank! So funktioniert alles wieder!
Prima, das freut mich.
technick90 hat geschrieben: 17. Nov 2023 07:01 Rules habe ich keine mehr. Das ging zuletzt irgendwie alles nicht mehr (schon laaaange her), seitdem nutze ich nur noch nächste Abholung und Datum nächste Abholung.
Die Rules waren für Abfall heute und Abfall morgen oder?
Ja, genau. Anbei dann noch die Rules, falls Du es wieder nutzen möchtest ;)

Rules

Code: Alles auswählen

/* Abfallkalender */
rule "Abfallkalender heute"
when
   Item ABFALL_ICAL_heute changed
then
   //Prüfen ob heute Abfall abgeholt wird
	if (ABFALL_ICAL_heute.state != "false" && ABFALL_ICAL_heute.state != "Uninitialized"){
      postUpdate(ABFALL_AKTIV_heute,ON)
      postUpdate(ABFALL_NAME_heute,ABFALL_ICAL_heute.state)
   } else {
      postUpdate(ABFALL_AKTIV_heute,OFF)
      postUpdate(ABFALL_NAME_heute,"false")
   }
end

rule "Abfallkalender morgen"
when
   Item ABFALL_ICAL_morgen changed
then
   //Prüfen ob morgen Abfall abgeholt wird
	if (ABFALL_ICAL_morgen.state != "false" && ABFALL_ICAL_morgen.state != "Uninitialized"){
      postUpdate(ABFALL_AKTIV_morgen,ON)
      postUpdate(ABFALL_NAME_morgen,ABFALL_ICAL_morgen.state)
   } else {
      postUpdate(ABFALL_AKTIV_morgen,OFF)
      postUpdate(ABFALL_NAME_morgen,"false")
   }
end
Ich lasse mir dann noch eine entsprechende Nachricht auf die Handy's schicken.

Code: Alles auswählen

rule "Abfallerinnerung heute"
when
	Time cron "0 45 06 ? * * *" 
then
	val actions = getActions("pushover", "pushover:pushover-account:account")
	if (ABFALL_AKTIV_heute.state == ON){
		actions.sendMessageToDevice("alle", "An den " + ABFALL_NAME_heute.state + " denken.", "Notification")
	}
end

rule "Abfallerinnerung morgen"
when
	Time cron "0 30 18 ? * * *" 
then
	val actions = getActions("pushover", "pushover:pushover-account:account")
	if (ABFALL_AKTIV_morgen.state == ON){
		actions.sendMessageToDevice("alle", "Morgen den " + ABFALL_NAME_morgen.state + " rausstellen.", "Notification")
	}
end
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

technick90
Beiträge: 39
Registriert: 24. Jul 2019 16:56
Answers: 1

Re: Abfallkalender Javascript OH3 > OH4

Beitrag von technick90 »

Die Rules habe ich nun auch wieder hingelegt, inklusive Pushnachricht für nächsten Tag.
Vielen Dank!

Bis zur nächsten OH Version mit weiteren Änderungen.

Antworten