Alexa Statusansagen/Steuerung über die Solaranzeige-Datenbank

Überwachung der Solaranlage per eMail oder Pushover und Steuerung von Geräten mit Smart Home Zentralen. PV-Überschuss Steuerung verbunden mit Geräten und Tasmota Firmware. Wallbox Steuerungen und API Schnittstelle, über die Daten in die Solaranzeigen Datenbanken geschrieben und gelesen werden können. Alles, was man für Steuerungsaufgaben benötigt.

Moderator: Ulrich

Antworten
Bogeyof
Beiträge: 1116
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 24 Mal
Danksagung erhalten: 161 Mal

Alexa Statusansagen/Steuerung über die Solaranzeige-Datenbank

Beitrag von Bogeyof »

Diesmal wieder etwas, das aus meinem Spieltrieb entstanden ist. Ich spiele seit einiger Zeit mit Alexa zur Steuerung meiner Hausautomation und wollte testen, ob ich nicht Statusansagen mit Daten aus der Solaranzeige erzeugen kann und ob ich rudimentäre Steuerungen von eigentlich nicht Alexa-kompatiblen Geräten machen kann (Spoiler, es geht).

Zuerst die nötigen Rahmenbedingungen:
- Ihr braucht ein Alexa-fähiges Gerät (kann auch ein Handy sein). Dazu den Skill "webhook" bei Alexa aktivieren.
- Auf Eurem Solaranzeige-Raspi/Rechner kommt ein PHP-Skript ins /var/www/html Verzeichnis und dieses muss ausführbar sein (z.B. chmod 755, im Anhang "webhook.php").
- Der Solaranzeige-Raspi/Rechner muss aus dem Internet erreichbar sein, also DynDNS Zugriff von außen und eine Portweiterleitung extern auf Port 80 der Solaranzeige.

Dann ist alles ganz einfach. In der Konfiguration des Webhook-Skills tragt Ihr die Url für den Zugriff auf das PHP-Skript auf Eurer Solaranzeige ein:
Screenshot 2023-09-27 142905.png
Das Trigger Wort habe ich "Befehl" genannt, die URL ist "http://deineDynDNS.xxx:Portfreigabe/webhook.php?text="

In der Variablen Text wird der gesprochene Text (letztlich Eure Befehle) an das PHP-Skript übertragen und kann dort ausgewertet werden. Nach Einlesen der Daten aus der InfluxDB oder Ausführen von HTTP-Requests zur Steuerung von eigentlich nicht Alexa-fähigen Geräten gibt der echo-Befehl in PHP eine "Antwort" an den Alexa-Webhook-Skill zurück, die dieser dann vorliest.

Der Aufruf des Webhook-Skills erfolgt in Alexa per Default mit "meine Steuerzentrale" oder durch eine selbst erstellte Routine auch mit einem beliebigen anderen Kommando. Danach sagt Alexa/Webhook "Ich höre zu". Jetzt sagt Ihr das Triggerwort "Befehl" und zusätzlich Eure beliebigen Kommandos, die Ihr in der webhook.php hinterlegt habt:
Z.B. "Befehl Status", Alexa/Webhook antwortet dann bei mir z.B. mit:
WhatsApp Bild 2023-09-27 um 14.42.23.jpg
Natürlich müsst Ihr das webhook.php - Skript auf Eure Bedürfnisse und Datenstrukturen entsprechend anpassen. Aber ich denke, es ist ersichlich, wie so etwas geht, also Datenbankzugriff, Kommando abfragen, HTTP-Requests absetzen und Rückmeldungen geben.
Im Prinzip kann so jeder Wert aus der Solaranzeige-Datenbank angesagt, sowie jedes beliebige Kommando und diverse Steuerungen für nicht Alexa-fähige Geräte umgesetzt werden. Viel Spaß damit.

P.S. Noch eine weitere Info zu Geräten mit Tasmota-Firmware. Wenn Ihr solche Geräte einsetzt und wollt diese in Alexa sehen/steuern, dann stellt unter sonstige Konfiguration den HTTP-Api Zugriff und die Emulation Hue Bridge ein, schon werden diese Geräte in Alexa auch direkt unter den Friendly-Namen erkannt.
Screenshot 2023-09-27 144743.png
Screenshot 2023-09-27 144743.png (68.23 KiB) 478 mal betrachtet
Dateianhänge
webhook.php
(8.26 KiB) 75-mal heruntergeladen

gzi
Beiträge: 153
Registriert: Mo 16. Jan 2023, 20:43
Hat sich bedankt: 20 Mal
Danksagung erhalten: 29 Mal

Re: Alexa Statusansagen/Steuerung über die Solaranzeige-Datenbank

Beitrag von gzi »

Man sollte unbedingt dazuschreiben

ACHTUNG Portweiterleitungen öffnen nicht nur Alexa sondernauch Hackern eine Tür.
JEDER Rechner im Internet wird innerhalb von Minuten von irgendwelchen Hackern abgefragt und ggf. angegriffen.

Man muss unbedingt checken, welche Prozesse am Raspi auf port 80 reagieren und ob die alle mit einem ordentlichen passwort abgesichert sind.

Aber auch das ist nicht sicher, weil im http Protokoll die Passworte unverschlüsselt übertragen werden.

Das gezeigte Beispiel taugt nur als Experiment für ein Spielsystem. Das Experiment ist aber riskant, weil Hacker sich währenddessen vom Raspi auch Zugriff auf andere Geräte im lokalen Netzwerk verschaffen kann und dort allerlei Unfug treiben (z.B. Tasmota, PC etc.)

Das geht innerhalb von Sekunden, denn Hacker haben ihre Angriffsvektoren natürlich voll automatisiert.
Raspi 3B, Hybrid Must PV18-3024 VHM, Hoymiles HM-800 , Nachteinspeisung, Flex-BKW, AhoyDTU, Smart Meter DTSU666-H, DIY Akku 6,7 KWh, DalyBMS2MQTT, Victron2MQTT,Architektur, HomeMatic CCU. Autor: Solaranlage Do-It-Yourself

cruso
Beiträge: 1
Registriert: Mo 31. Jul 2023, 11:35
Hat sich bedankt: 1 Mal

Re: Alexa Statusansagen/Steuerung über die Solaranzeige-Datenbank

Beitrag von cruso »

Vielen Dank für die super Anleitung!
Habe es auf meinen V-Server gepackt und da dort Solaranzeige ja nicht läuft den PHP Code etwas angepasst.
Da dort ja nur ein Grafana hinter eine Reverseproxy läuft hier noch die vhost Anpassung um ein Verzeichnis (im meinem Falle /sz/) ins Web-Root umzuleiten:

Code: Alles auswählen

<IfModule mod_ssl.c>
<VirtualHost *:443>
	# The ServerName directive sets the request scheme, hostname and port that
	# the server uses to identify itself. This is used when creating
	# redirection URLs. In the context of virtual hosts, the ServerName
	# specifies what hostname must appear in the request's Host: header to
	# match this virtual host. For the default virtual host (this file) this
	# value is not decisive as it is used as a last resort host regardless.
	# However, you must set it for any further virtual host explicitly.
	#ServerName www.example.com

	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html

	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
	# error, crit, alert, emerg.
	# It is also possible to configure the loglevel for particular
	# modules, e.g.
	#LogLevel info ssl:warn

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	# For most configuration files from conf-available/, which are
	# enabled or disabled at a global level, it is possible to
	# include a line for only one particular virtual host. For example the
	# following line enables the CGI configuration for this host only
	# after it has been globally disabled with "a2disconf".
	#Include conf-available/serve-cgi-bin.conf


  ServerName playground.cruso.de

  ReWriteEngine on
  
  # Alias für /sz/ hinzufügen, um auf das lokale Verzeichnis zu verweisen
  Alias "/sz" "/var/www/html"  
  
  # Header set Host playground.cruso.de;
  ProxyPreserveHost On
  
  # ProxyPass für /sz/ deaktivieren, um Konflikte zu vermeiden
  ProxyPass "/sz" "!"
  ProxyPass "/sz/" "!"  
  
  ProxyPass "/"  "http://127.0.0.1:3000/"
  ProxyPassReverse "/"  "http://127.0.0.1:3000/"


SSLCertificateFile /etc/letsencrypt/live/playground.cruso.de/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/playground.cruso.de/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Beispiellink zum Script:
https://playground.cruso.de/sz/pv.php?text=status
Dashboard:
https://playground.cruso.de/d/ed270d08- ... efresh=30s
Dateianhänge
pv.php
(5.14 KiB) 19-mal heruntergeladen

Antworten

Zurück zu „Überschuss Steuerung, Anlagenüberwachung, Anbindung an die Heizung, API Schnittstelle und vieles Andere mehr.“