LOXONE2FHEM

Begonnen von Zwiebel, 19 Januar 2017, 15:40:22

Vorheriges Thema - Nächstes Thema

Zwiebel

Hallo SehlinhS,

Mein Vorschlag wäre:

1. nichts in die myUtils schreiben
2. den Miniserver definieren (hast du wahrscheinlich schon gemacht)

define loxone LOXONE 7005 192.168.178.34


3. ein notify definieren auf alles was du an Loxone senden möchtest,

define VissmannVitoconect_notifyer notify VissmannVitoconect:HK1-Heizkurve-Steigung.*|VissmannVitoconect:HK1-Vorlauftemperatur.* {LOXONE_Heizung("loxone","$NAME","$EVTPART0","$EVTPART1")}


Das soll aber nur ein Vorschlag sein, vielleicht gibt es hier jemand der eine "schönere" Lösung hat.

john0815

Hallo!

Ich hab vor ca 2 Jahren einige Homematic Geräte in Loxone Eingebunden (Bewegungsmelder, Taster etc.) und bin bei der Programmierung etwas "out of date."

Wäres es möglich mir für HM-SEC-SD-2 Homematic Rauchmelder ein Script zukommen zu lassen.

Ich habe das mal so probiert aber ich glaube dass da ein Hund drinnen ist:

sub SmokeDetectorToLoxone($)
{
my ($device) = @_;
my $state = ReadingsVal("$device","state","-1");
if ($state eq "off") {
$state = "0";
}
if ($state eq "smoke-Alarm_") {
$state = "1";
}

my $battery = ReadingsVal("$device","battery","-1");
if ($battery eq "ok") {
$battery = "1";
}
if ($battery eq "low") {
$battery = "0";
}


my $level = ReadingsVal("$device","level","-1");
if ($level eq "200") {
$battery = "1";
}
if ($battery eq "199") {
$battery = "0";
}


UDP_Msg("10.0.0.200" , "7000" , "$device: $state $battery $level");
UDP_Msg("10.0.0.200" , "7000" , "$device: $state ");
UDP_Msg("10.0.0.200" , "7000" , "$device: $battery ");
UDP_Msg("10.0.0.200" , "7000" , "$device: $level");
}

##########################################################


Laut Fhem-wiki gibts da folgende Readings:

Readings
Für jeden SD sind folgende Readings relevant:

teamCall from <name>:<count>
state:[off|smoke-Alarm_<count>]
smoke_detect:<von_name>
battery:[ok|low]
level:<0..200>
count ist ein Zähler, den das Gerät liefert um neue Alarme unterscheiden zu können
level ist ein Wert zwischen 0 und 200. 200 ist Alarm, 199 bedeutet Alarm, aber die Sirene ist abgeschaltet.

Beim TeamLead laufen alle Alarme auf

teamCall: from <name>:<count>
recentAlarm:<von_name>
level:<0..200>
eventNo:<count>
state:[off|smoke-Alarm_<count>]
smoke_detect:<von_name>
SDteam:[add_<name>|remove_<name>]

von_name ist der Name des SD, der gemeldet hat.
smoke_detect ist der aktuelle Alarm, während recentAlarm die letzte Alarmquelle anzeigt, auch wenn der Alarm schon behoben ist.
SDteam kommt gelegentlich bei Konfigurationsereignissen zum Tragen.

Quelle: https://wiki.fhem.de/wiki/HM-SEC-SD_Rauchmelder

Danke im Voraus für die Hilfe






Zwiebel

Hallo john0815,

bau doch mal ein Log in deine Funktion ein, um zu sehen ob du an die Werte kommst.

Log 3, "SmokeDetectorToLoxone device: $device state: $state";

und ruf deine Fuktion von FHEM aus auf.
{SmokeDetectorToLoxone("deinRauchmelder")}

Wenn du dein device und dein state im fhem.log siehst dann sollte der Fehler auf Loxone seite zu suchen sein.

viele Grüße
Zwiebel

cmonty14

Hallo,

ich schaffe es nicht, das Modul "LOXONE" anzulegen.

Hier die durchgeführten Schritte:
1. Download der Datei 93_LOXONE.pm
2. Diese Datei auf FHEM kopieren in Verzeichnis /opt/fhem/contrib/
3. Datei-Benutzer anpassen zu fhem.dialout
4. In FHEM den Befehl shutdown restart ausführen
5. In FHEM den Befehl define loxone LOXONE <UDP Port> <IP Loxmini Server> ausführen

Ich erhalte dann diese Fehlermeldung:
Unknown module LOXONE

Was ist die Ursache für diesen Fehler?


THX

Zwiebel

Hallo,

das Modul muß nach /opt/fhem/FHEM nicht nach contrib!
Aber das ganze ist nicht für Anfänger gedacht.....

viele Grüße,
Zwiebel

cmonty14

#20
Hallo,

ich habe das Modul erfolgreich eingerichtet.

Jetzt möchte ich ein Device, das in FHEM angelegt ist, über Loxone steuern.
Es handelt sich um einen Rollladen, der mittels Homematic Funktaster bedient wird; der verwendete Type ist CUL_HM.

Der Rollladen wird dann mit dem Befehl
set KU.rollladen <x> pct
angesteuert, wobei 0 < x < 100 ist (0=geschlossen; 100=geöffnet).

In Loxone habe ich eine virtuellen Ausgang angelegt mit dieser Adresse: http://fhem-loxmini:<Passwort>@172.16.20.6
Wenn ich diese Adresse im Browser aufrufe, dann lande ich direkt im FHEM WebUI.
Somit würde ich sagen: die Authentifizierung funktioniert.

Dann habe ich in Loxone einen virtuellen Ausgang Befehl angelegt: /fhem?cmd=set KU.rollladen 100 pct

Meine Erwartung ist, wenn dieser Befehl über einen Trigger angesteuert wird, dass dann der Rollladen öffnet.

Allerdings passiert: nichts!

Meine Vermutung ist, dass der Schaltbefehl nicht am FHEM-Server ankommt.

Wie kann die Ursache dieses Fehlers identifiziert und der Fehler behoben werden?


Gruß
Thomas



MadMax-FHEM

#21
Steht etwas im fhem Log?

Evtl. was bzgl. csrf-Token?

Bzw. wird (verm.) per Http aufgerufen!?

Und da müssen doch Leerzeichen "encoded" werden!?

Weil: cmd=set KU.rollladen 100 pct
enthält ja Leerzeichen...

EDIT: also cmd=set%20KU.rollladen%20100%20pct
Bzgl. des Punktes bin ich nicht sicher... Habe aber auch kein Loxone-Zeugs... ;)

EDIT: und muss es nicht "set Rolladen pct 100" !? Habe aber auch keine Homematic Rolladen... ;)

Übrigens: wie sinnvoll ist ein Passwort zu verwenden und dann kein https!?

Fehlt bei dem Aufruf nicht auch der User!?

Mehr Ideen hab ich grad nicht...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

cmonty14

Zitat von: MadMax-FHEM am 30 Dezember 2020, 21:14:57
Steht etwas im fhem Log?

Evtl. was bzgl. csrf-Token?

Bzw. wird (verm.) per Http aufgerufen!?

Und da müssen doch Leerzeichen "encoded" werden!?

Weil: cmd=set KU.rollladen 100 pct
enthält ja Leerzeichen...

Übrigens: wie sinnvoll ist ein Passwort zu verwenden und dann kein https!?

Fehlt bei dem Aufruf nicht auch der User!?

Mehr Ideen hab ich grad nicht...

Gruß, Joachim

Die Leerzeichen hatte ich auch im Verdacht.
Aber hier werden auch Leerzeichen verwendet (4. Schritt: Schaltbefehle von Loxone an FHEM weitergeben).

Der http Aufruf inkludiert den Benutzer: fhem-loxmini.

HTTPS wird nicht benötigt weil seperates Netzwerk ohne Zugriff von außen.

Im Log steht tatsächlich ein csrfToken Fehler:
2020.12.30 21:29:46 3: FHEMWEB WEB CSRF error:  ne csrf_261802677805954 for client WEB_172.16.20.4_4126 / command set KU.rollladen 100 pct. For details see the csrfToken FHEMWEB attribute.

MadMax-FHEM

Warum dann überhaupt Passwort?
Aber egal...

Dann musst du verm. einen weiteren Webzugang mit fixem Token einrichten und das an den Aufruf dranhängen...

EDIT: oder halt beim bestehenden Webzugang...

Ganz deaktivieren würde ich nicht empfehlen!
Wenn du es dennoch tust/erwägst, dann hast du überhaupt nicht verstanden, wozu das da ist.
Und eigenes Netz etc. ist keine "Lösung"...

Siehe: https://wiki.fhem.de/wiki/CsrfToken-HowTo

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

cmonty14

Ich habe mir das Wiki um CsrfToken angesehen und mich für diese Option entschieden:
Alternative Konfiguration: API Web
define WEBapi FHEMWEB 8088 global
attr WEBapi csrfToken none
attr WEBapi allowfrom 172.16.20.4|127.0.0.1

MadMax-FHEM

Dann hast du NICHT verstanden was cross site scripting ist und dass dagegen nur ein Token (selbst ein fixer) hilft!

Mehr kann ich nicht schreiben...

Aber wenn schon Passwortschutz ohne https verwendet (als "ok") empfunden wird...

Selbst die Einschränkung auf die 2 IPs ist kein richtiger Schutz aber immerhin...

Aber es ist ja dein System...

Gruß, Joachim

P.S.: deine gewählte Lösung hat ein wenig von "ich mach alles als root weil da geht dann einfach alles"... ;)
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

cmonty14

#26
Die Schwierigkeit ist u.a., dass der http-Aufruf von Loxone den Token nicht auslesen kann, curl und wget kann Loxone Miniserver meines Wissens nicht.
Ich weiß auch nicht, ob Loxone Miniserver https kann.

Dann bleibt nur der fixe Token.

Diesen habe ich jetzt eingestellt wie im Wiki angegeben.

Der Aufruf sieht dann so aus:
http://172.16.20.6:8083/fhem?cmd=set%KU.rollladen%100%pct&fwcsrf=<fixer_token>

Benutzer + Passwort habe ich jetzt (auch) weggelassen.

Jetzt ist meine Annahme, dass der Aufruf dieser URL im Browser funktionieren sollte; aber ein Test schlägt fehl, weil Benutzer + Passwort angegeben werden müssen und danach dir URL verändert ist; der Fehler ist dann:
Unknown command set%KU.rollladenP%pct, try help.

MadMax-FHEM

Tja, dann muss es eben ohne Token...

Musst/solltest halt nur wissen welche Risiken bleiben...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

amenomade

Kommando sollte eher set%20KU.rollladen%20pct%20100&.... sein
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

MadMax-FHEM

Hm irgendwo hat er aber geschrieben, dass es %20 für Leerzeichen nicht braucht...

Aber nur % ist verm. komplett falsch... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)