PV Leistung und Speicherstand per Alexa abfragen
-
- Beiträge: 202
- Registriert: 2. Mär 2020 13:50
PV Leistung und Speicherstand per Alexa abfragen
Hallo zusammen,
wir haben eine PV Anlage mit Kostal Wechselrichter. Ich würde gerne die Leistung der PV Anlage und den Ladestand meiner Batterie per Alexa abfragen.
Items sind mittels Kostal Binding verfügbar.
Hat jemand eine Idee?
Viele Grüße
Sascha
wir haben eine PV Anlage mit Kostal Wechselrichter. Ich würde gerne die Leistung der PV Anlage und den Ladestand meiner Batterie per Alexa abfragen.
Items sind mittels Kostal Binding verfügbar.
Hat jemand eine Idee?
Viele Grüße
Sascha
-
- Beiträge: 489
- Registriert: 30. Apr 2021 13:13
Re: PV Leistung und Speicherstand per Alexa abfragen
Moin,
mein Lösungsvorschlag:
1.) im Alexa-Universum legst Du eine Routine an, die auf ein Kennwort reagiert und irgend was machen soll (dient nur dazu, das die Dame nicht genervt auf das unbekannte Wort reagiert)
2.) triggerst Du deine Echos-Sprachbefehle (LetzterSprachbefehl-lastVoiceCommand) auf dein Kennwort
3.) ermittelst Du anhand des angesprochenen Echos dessen Ausgabe-Item (Sprich-textToSpeech) und schickst deine Nachricht dorthin ab
Hier im kleinem JavaScript-Beispiel (mit Blockly erstellt ^^) ist das Kennwort "solar" und die Echos sind nach einem bestimmten Schema (Gerät_Channel) benannt.
mein Lösungsvorschlag:
1.) im Alexa-Universum legst Du eine Routine an, die auf ein Kennwort reagiert und irgend was machen soll (dient nur dazu, das die Dame nicht genervt auf das unbekannte Wort reagiert)
2.) triggerst Du deine Echos-Sprachbefehle (LetzterSprachbefehl-lastVoiceCommand) auf dein Kennwort
3.) ermittelst Du anhand des angesprochenen Echos dessen Ausgabe-Item (Sprich-textToSpeech) und schickst deine Nachricht dorthin ab
Hier im kleinem JavaScript-Beispiel (mit Blockly erstellt ^^) ist das Kennwort "solar" und die Echos sind nach einem bestimmten Schema (Gerät_Channel) benannt.
Code: Alles auswählen
var sprachbefehl, empfaenger, ausgabe, sender;
sprachbefehl = String(event.itemState);
empfaenger = event.itemName;
console.info(empfaenger);
if (sprachbefehl.indexOf('solar') + 1 > 0) {
ausgabe = 'Der Ertrag liegt derzeit bei ' + String(items.getItem('wunderground_Sonne').state);
sender = empfaenger.replaceAll('LetzterSprachbefehl','Sprich');
console.info(sender);
items.getItem(sender).sendCommand(ausgabe);
}
-
- Beiträge: 202
- Registriert: 2. Mär 2020 13:50
Re: PV Leistung und Speicherstand per Alexa abfragen
Hi Harka,
wo muss dein Code dann jeweils eingebettet sein in OpenHab? Auf welche Sprachbefehl reagiert Alexa denn dann?
Viele Grüße und besten Dank.
Sascha
wo muss dein Code dann jeweils eingebettet sein in OpenHab? Auf welche Sprachbefehl reagiert Alexa denn dann?
Viele Grüße und besten Dank.
Sascha
-
- Beiträge: 489
- Registriert: 30. Apr 2021 13:13
Re: PV Leistung und Speicherstand per Alexa abfragen
Moin,
das Beispiel nutzt "Alexa, Solar" als Befehl. Sowohl in der Alexa-Routine als auch in der OH-Rule.
Die Rule wird von einem "LetzterSprachbefehl changed to" ausgelöst und ist ein "ECMAScript 262 Edition 11". Wenn Du JavaScript nicht nutzt (installiert hast) sollte es sich relativ leicht in eine andere Sprache überführen lassen. Eingefügt wird es bei Add_Action/Run_Script.
Wenn Du bei den Echos "LetzterSprachbefehl-lastVoiceCommand" am laufen hast schau mal ins Log. Das erklärt vieles.
das Beispiel nutzt "Alexa, Solar" als Befehl. Sowohl in der Alexa-Routine als auch in der OH-Rule.
Die Rule wird von einem "LetzterSprachbefehl changed to" ausgelöst und ist ein "ECMAScript 262 Edition 11". Wenn Du JavaScript nicht nutzt (installiert hast) sollte es sich relativ leicht in eine andere Sprache überführen lassen. Eingefügt wird es bei Add_Action/Run_Script.
Wenn Du bei den Echos "LetzterSprachbefehl-lastVoiceCommand" am laufen hast schau mal ins Log. Das erklärt vieles.
-
- Beiträge: 202
- Registriert: 2. Mär 2020 13:50
Re: PV Leistung und Speicherstand per Alexa abfragen
puh, okay. Ich bewege mich eigentlich nur innerhalb OH Rules und habe noch keine Erfahrung mit Skripten.
Kannst du mir vielleicht erklären wie ich es Step by Step einbette?
Kannst du mir vielleicht erklären wie ich es Step by Step einbette?
-
- Beiträge: 489
- Registriert: 30. Apr 2021 13:13
Re: PV Leistung und Speicherstand per Alexa abfragen
Das entspricht imho weitestgehend dem, was du sonst nach „then“ kommt. Ich kenn mich nicht gut genug mit DSL–Rules aus um dir das anzupassen. Nur das Semikolon wegzulassen wird wohl nicht reichen
Wenn du die Regel über die UI anlegst ist ja das wie schon weiter oben beschrieben.
Je nach deinen Gegebenheiten (Versionen, Namensgebung, …) sind ggf. noch Anpassungen nötig und der Feinschliff fehlt auch noch.

Wenn du die Regel über die UI anlegst ist ja das wie schon weiter oben beschrieben.
Je nach deinen Gegebenheiten (Versionen, Namensgebung, …) sind ggf. noch Anpassungen nötig und der Feinschliff fehlt auch noch.
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: PV Leistung und Speicherstand per Alexa abfragen
Also vorweg: ich nutze keine Sprachsteuerung.
Nach meinem Verständnis braucht es aber nur ein Item pro Echo:
Entsprechend ist die Rule einfach:
Alle lastVoiceCommand Items sind in der Gruppe gAlexaVC zusammengefasst.
Die Rule prüft, ob das Schlüsselwort enthalten ist. Ist das nicht der Fall, bricht sie ab. Hier könnte man natürlich auch umgekehrt vorgehen, falls noch weitere Sprachausgaben über diese Rule abgewickelt werden sollen.
Da wir einen numerischen Wert ausgeben wollen, sollten wir zunächst prüfen, dass auch ein solcher im Item vorliegt (besser ist das...)
Sollte das nicht der Fall sein, ist eine Warnmeldung angebracht.
Die Rule läuft noch? Dann ist der Rest einfach...
Wir bauen den Meldungsstring zusammen - wie man das macht ist Geschmackssache, hier halt mal mittels StringBuilder.
Wir wollen den Wert auf jeden Fall auf eine sinnvolle Ausgabe beschränken (man könnte hier auch mit ein wenig Mathematik z.B. auf volle 100 Watt gehen und die Ausgabe in Kilowatt vornehmen, kommt halt auch auf die Anlage an, was da am sinnvollsten ist...)
Nach meinem Verständnis braucht es aber nur ein Item pro Echo:
Der Channel ist Read/Write, er enthält das letzte gesprochene Kommando. ein gesendeter Befehl wird als Text ausgegeben.lastVoiceCommand | String | R/W | Last voice command spoken to the device. Writing to the channel starts voice output.
Entsprechend ist die Rule einfach:
Code: Alles auswählen
rule "Alexa Scprachausgabe"
when
gAlexaVC received update // es wurde ein Sprachbefehl empfangen
then
if(!(newState.toString.contains("solar"))) // Schlüsselwort fehlt?
return; // dann Abbruch
if(!(Solarertrag.state instanceof Number)) { // ungültiger Wert?
logWarn("alexaSolar","Item Solarertrag hat ungültigen Status ({})",Solarertrag.state)
triggeringItem.sendCommand("Eine Meldung ist derzeit nicht möglich.")
return; // dan Abbruch mit Meldung
}
val StringBuilder strMeldung = new StringBuilder() // generiere String
strMeldung.append("Der Solar Ertrag beträgt derzeit ")
strMeldung.append((Solarertrag.state as Number).intValue.toString)
strMeldung.append(" Watt.")
triggeringItem.sendCommand(strMeldung.toString) // Sende String an das triggernde Item
end
Die Rule prüft, ob das Schlüsselwort enthalten ist. Ist das nicht der Fall, bricht sie ab. Hier könnte man natürlich auch umgekehrt vorgehen, falls noch weitere Sprachausgaben über diese Rule abgewickelt werden sollen.
Da wir einen numerischen Wert ausgeben wollen, sollten wir zunächst prüfen, dass auch ein solcher im Item vorliegt (besser ist das...)
Sollte das nicht der Fall sein, ist eine Warnmeldung angebracht.
Die Rule läuft noch? Dann ist der Rest einfach...
Wir bauen den Meldungsstring zusammen - wie man das macht ist Geschmackssache, hier halt mal mittels StringBuilder.
Wir wollen den Wert auf jeden Fall auf eine sinnvolle Ausgabe beschränken (man könnte hier auch mit ein wenig Mathematik z.B. auf volle 100 Watt gehen und die Ausgabe in Kilowatt vornehmen, kommt halt auch auf die Anlage an, was da am sinnvollsten ist...)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 489
- Registriert: 30. Apr 2021 13:13
Re: PV Leistung und Speicherstand per Alexa abfragen

Ich habe das immer mit dem Extra-Channel gelesen + Beispiele gesehen und so auch gehandhabt. Gerade getestet und - Hokus-Pokus - es klappt mit lastVoiceCommand. Danke Udo!
Lt. Doku ist das auch nicht neu.