"WEB is not password protected", ttyAMA0

Begonnen von alpha_kilo, 06 Januar 2025, 15:59:40

Vorheriges Thema - Nächstes Thema

alpha_kilo

Hallo zusammen,

erstmal noch allen ein frohes, gesundes und friedvolles Neues Jahr und eine kurze Vorstellung.

Bin seit letztem Jahr im Ruhestand und war lange im groben Bereich IT unterwegs (wenn nötig kann ich das ergänzen). Programmiert habe ich in den letzten 40 Jahren ne Menge verschiedenes Zeugs, darunter auch mit Perl und Python. Daher ist mir FHEM schonmal sympathisch.

Nun zu meiner Umgebung:

- PV-Anlage, Fronius Symo Wechselrichter 8.2-3-M, Wattpilot, Senec-Speicher (noch V2.1, wird demnächst getaucht)
- und meinem Ziel: mein Hybridfahrzeug mit Überschussladung zu laden.

Fronius Smart Meter IP erscheint mir für die Aufgaben relativ teuer und ich suche nach einer preiswerten Lösung (wenn möglich auf Basis Rasperry Zero W, 2, 3A+ oder zur Not auch 5).

Bisher hatte ich den aktuellen Verbrauch optisch vom Zähler ausgelesen (ESP8266/Tasmota, Raspberry), aber eigentlich braucht man zum Überschussladen weitere Daten wie Erzeugung und Ladestand. Die sehe ich zumindest alle in der Senec-App. Ich habe auch einen Thread (https://wiki.fhem.de/wiki/GoE_Charger) dafür gefunden und deshalb begonnen FHEM auf dem Raspberry grob nach:

https://meintechblog.de/2013/05/20/fhem-server-auf-dem-raspberry-pi-in-einer-stunde-einrichten/

zu installieren. 2 Punkte machen mich stutzig, für die ich trotz Suche keine Lösung verstanden habe (auch wenn ich auf Verweise gestossen bin:

1. die Fehlermeldung ""WEB is not password protected": ich verstehe nicht, wie ich die Webseite absichern kann (sie braucht nicht von aussen erreichbar sein, aber ich möchte trotzdem die Seite per Authentifizierung absichern, falls irgendjemand in mein Netz eindringt). Dazu füge ich unten meine fhem.cfg an. Muss ich dafür etwas wie für "define WEBphone FHEMWEB 8084 global ..." in obiger Installationsanleitung ergänzen? Devices habe ich bisher noch nicht angelegt und verstehe auch nicht, warum dies eine Voraussetzung zum Absichern der Webseite nötig sein soll wie in https://www.fhemwiki.de/wiki/Erste_Schritte_in_FHEM beschrieben.

2. Zu ttyAMAo. Ich sehe jetzt:
user@FHEM:/opt/fhem $ ls /dev/ttyA*
ls: cannot access '/dev/ttyA*': No such file or directory
user@FHEM:/opt/fhem $ ls /dev/serial*
/dev/serial0

und bin unsicher, ob ich dem Abschnitt "# seriell-getty Dienst für ttyAMA0 dauerhaft deaktivieren" unter "https://www.fhemwiki.de/wiki/Raspberry_Pi" folgen muss, oder nicht. Die serielle Konsole habe ich auf Hardware umgestellt.

Tut mir leid, wenn ich in der Suche doch was übersehen habe. Zumindest für die Fehlermeldung sah ich viele Treffer, ohne einen Betreff wirklich zuordnen zu können.

Am Ende die Frage: ist mein Ziel über FHEM überhaupt umsetzbar und macht dies so Sinn?

Viele Grüße,

Andreas

P.S.: Falls ich mit meiner Config etwas kompromittiert habe bitte ich um kurze Info.



attr global userattr cmdIcon devStateIcon:textField-long devStateStyle icon sortby webCmd webCmdLabel:textField-long widgetOverride
attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .
attr global statefile ./log/fhem.save
attr global verbose 3

define WEB FHEMWEB 8083 global
setuuid WEB 677bdc60-f33f-3e5d-eb2c-9335fab4491d7dc2

# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log Logfile
setuuid Logfile 677bdc62-f33f-3e5d-9f01-182c6ce092f33f22

define autocreate autocreate
setuuid autocreate 677bdc63-f33f-3e5d-4b26-d50a3b16760bfccf
attr autocreate filelog ./log/%NAME-%Y.log

define eventTypes eventTypes ./log/eventTypes.txt
setuuid eventTypes 677bdc63-f33f-3e5d-c007-5878bed353ae990f

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create
setuuid initialUsbCheck 677bdc63-f33f-3e5d-5f2e-733a696b01dbb87b
define allowed allowed
setuuid allowed 677bdca7-f33f-3e5d-2ed9-6d99cec8cbc62c12


Otto123

#1
Hallo Andreas,

auch von mir ein gesundes neues Jahr und willkommen im FHEM Forum.  :)

Ich fange mal mit diesem netten Hinweis an, speziell wegen den fehlenden codetags ;) https://forum.fhem.de/index.php/topic,71806.0.html

Zu Deinem Artikel den Du zum einrichten verwendest hast, der ist mittlerweile 11 Jahre alt!
Zitat
Zitat von: alpha_kilo am 06 Januar 2025, 15:59:402 Punkte machen mich stutzig

Zum Problem ttyAMA0
Je nachdem welchen Raspberry Pi Du hast, findest Du hier eigentlich exakt das Vorgehen
Beachte da auch bitte diesen Abschnitt.

Wegen Absichern des WEB Interfaces, Du musst ein allowed Device einrichten.
https://fhem.de/commandref_modular_DE.html#allowed

Gewöhne Dir bitte nicht an irgendwie in die fhem.cfg zu schauen / editieren. Mach alles über das Web Interface, da gibt es eine Syntax Kontrolle.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

alpha_kilo

#2
Zitat von: Otto123 am 06 Januar 2025, 16:49:26Hallo Andreas,

ich fange mal mit diesem netten Hinweis an, speziell wegen den fehlenden codetags ;) https://forum.fhem.de/index.php/topic,71806.0.html

Zum Problem ttyAMA0
Je nachdem welchen Raspberry Pi Du hast, findest Du hier eigentlich exakt das Vorgehen

Wegen Absichern des WEB Interfaces, Du musst ein allowed Device einrichten.
https://fhem.de/commandref_modular_DE.html#allowed



Gruß Otto

Hallo Otto,

auf den Seiten war ich, habe sie aber wie erwähnt nicht verstanden.

Zum Thema AMA0 fand ich meinen Zero nicht aufgeführt. Ich habe deshalb folgendes probiert:

user@FHEM:~ $ sudo systemctl stop serial-getty@ttyAMA0.service
user@FHEM:~ $ sudo systemctl disable serial-getty@ttyAMA0.service
user@FHEM:~ $ sudo systemctl mask serial-getty@ttyAMA0.service
Created symlink /etc/systemd/system/serial-getty@ttyAMA0.service → /dev/null.
user@FHEM:~ $ ls /dev/serial*
/dev/serial0

also schonmal kein Unterschied, wobei sich mir nicht erklärt, ob ich AMA0 brauche. Egal, hab das gemacht zusammen mit der Anpassung zu Bluetooth und neu gestartet:

user@FHEM:~ $ ls /dev/serial*
/dev/serial0
user@FHEM:~ $ ls /dev/*AMA*
/dev/ttyAMA0

Edit:

"user@FHEM:~ $ ls -l /dev/serial*
lrwxrwxrwx 1 root root 7 Jan  6 17:54 /dev/serial0 -> ttyAMA0
user@FHEM:~ $ ls -al /dev/ttyAMA0
crw-rw---- 1 root dialout 204, 64 Jan  6 17:55 /dev/ttyAMA0"

also immer noch nicht so, wie es sein soll und auch eine Wiederholung der "systemctl"-Kommandos hat daran nichts verändert.

Zum Thema Web-Authentifizierung: wäre "WEB" ein Device? Hätte darunter eher einen Dienst verstanden. Naja, auch wenn ich's nicht komplett verstanden habe, habe ich rumprobiert und nach:

define allowedWEB allowed
attr allowedWEB validFor WEB
attr allowedWEB basicAuth { "$user:$password" eq "xxxxx:yyyyy" }
attr allowedWEB allowedCommands set,get,save

scheint die Meldung nicht mehr in den Logs aufzutauschen und in der Config sehe ich eine Änderung mit:

< define allowedWEB allowed
< setuuid allowedWEB 677c0479-f33f-3e5d-ab49-be49e4701e50c395
< attr allowedWEB allowedCommands set,get,save
< attr allowedWEB basicAuth { "$user:$password" eq "xxxxx:yyyyy" }
< attr allowedWEB validFor WEB

Aber der Aufruf der Webseite verlangt immer noch kein Passwort. Wenn ich testhalber versuche das 1. Kommando nochmal abzusetzen bekomme ich nun "Forbidden command define." und ich bin unsicher, ob meine Aktion falsch war, oder das Kommando eben schon existiert.

Viele Grüße,

Andreas

Otto123

#3
Zitat von: alpha_kilo am 06 Januar 2025, 15:59:40Devices habe ich bisher noch nicht angelegt und verstehe auch nicht, warum dies eine Voraussetzung zum Absichern der Webseite nötig sein soll
Das ist nicht zum Absichern der Webseite nötig, sondern verhindert, dass Du Dich bei deinen Übungen aus der Haupt Webseite komplett ausperrst ;)

Zitat von: alpha_kilo am 06 Januar 2025, 17:37:28wobei sich mir nicht erklärt, ob ich AMA0 brauche.
brauchst Du nur, wenn Du auf der GPIO ein Modul verwenden willst, welches die interne UART verwendet. Willst Du ?
Zitat von: alpha_kilo am 06 Januar 2025, 17:37:28wäre "WEB" ein Device?
Naja, da ist der Sprachgebrauch im FHEM "schwierig" - sagen wir ein define - aber was ist ein define? Insofern reden wir meist über ein Device welches mit define definiert wird, so auch die WEB Instanz (per Standard)

Du hast jetzt einfach das Beispiel kopiert und damit wird verhindert, dass Du andere Kommandos als set,get,save über die Web Oberfläche absetzt.
Du hättest weiterlesen sollen:
ZitatSet
basicAuth <username> <password>
password <password>
globalpassword <password>
diese Befehle setzen das entsprechende Attribut, indem sie aus den Parameter und ein Salt ein SHA256 Hashwert berechnen. Achtung: das perl Modul Digest::SHA wird benötigt.
solange Du kein set ... ausgeführt hast, wurde der username und das passwort nicht gesetzt.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

alpha_kilo

Zitat von: Otto123 am 06 Januar 2025, 18:01:35
Zitat von: alpha_kilo am 06 Januar 2025, 15:59:40Devices habe ich bisher noch nicht angelegt und verstehe auch nicht, warum dies eine Voraussetzung zum Absichern der Webseite nötig sein soll
Das ist nicht zum Absichern der Webseite nötig, sondern verhindert, dass Du Dich bei deinen Übungen aus der Haupt Webseite komplett ausperrst ;)

Zitat von: alpha_kilo am 06 Januar 2025, 17:37:28wobei sich mir nicht erklärt, ob ich AMA0 brauche.
brauchst Du nur, wenn Du auf der GPIO ein Modul verwenden willst, welches die interne UART verwendet. Willst Du ?
Zitat von: alpha_kilo am 06 Januar 2025, 17:37:28wäre "WEB" ein Device?
Naja, da ist der Sprachgebrauch im FHEM "schwierig" - sagen wir ein define - aber was ist ein define? Insofern reden wir meist über ein Device welches mit define definiert wird, so auch die WEB Instanz (per Standard)

Du hast jetzt einfach das Beispiel kopiert und damit wird verhindert, dass Du andere Kommandos als set,get,save über die Web Oberfläche absetzt.
Du hättest weiterlesen sollen:
ZitatSet
basicAuth <username> <password>
password <password>
globalpassword <password>
diese Befehle setzen das entsprechende Attribut, indem sie aus den Parameter und ein Salt ein SHA256 Hashwert berechnen. Achtung: das perl Modul Digest::SHA wird benötigt.
solange Du kein set ... ausgeführt hast, wurde der username und das passwort nicht gesetzt.

Ok, sieht sinnig aus, mal sehen, ob ich mich nicht schon ausgesperrt habe. Hab ich wohl, ich melde mich dazu wieder.

Zum Thema Serial: wenn ich alle Werte vom Speicher auslesen kann brauche ich keine serielle Verbindung, dann lasse ich das erstmal.

Gruß,

Andreas


alpha_kilo

Hallo zusammen,

die Konfiguration/Installation von FHEM scheint meine Möglichkeiten/Kenntnisse zu überschreiten. Ich versuche erstmal eine andere Lösung und melde mich später nochmal. Vielen Dank für die bisherige Hilfe bisher.

Viele Grüße,

Andreas