[gelöst] Wie kann man eigenen Devices Befehle zuordnen?

Begonnen von Gisbert, 01 Januar 2017, 22:42:54

Vorheriges Thema - Nächstes Thema

automatisierer


Gisbert

Hallo Ralf,
die IP-Adresse und die Schaltbefehle sind völlig egal an dieser Stelle. Fhem und notify sollen einen Befehl absetzen, ob der sinnvoll ist, irgendwo ankommt, ist bis zu diesem Punkt erstmal egal.
Wenn ich zu einem Device 3 notifys anlege, dann funktioniert die Schaltung; aber dann hab ich jetzt schon 15 notifys mit Aussicht auf mehr.
Wenn Dir noch etwas einfällt, dann bin ich interssiert.

Hallo CoolTux,
bei dem Programm auf dem Sonoff Dual handelt es sich um einen Sketch von dieser Quelle:
https://blog.thesen.eu/funk-wlan-markisensteuerung-mit-esp8266-und-arduino/, den ich für meine Bedürfnisse angepasst habe. Im Detail gibt es deutliche Unterschiede zum Orginal.
FunctionHoch, ...Runter, ...Stop sind im Sketch definierte Befehle. Bei Bedarf kann ich das Programm zur Verfügung stellen; aber bitte nicht meckern, wahrscheinlich ist noch Code enthalten, der nicht benötigt wird.
Man kann den Sonoff resp. ESP8266 ganz ohne Fhem über einen Webbrowser steuern. Das ist schon ganz nett, hat aber mit Automation nichts zu tun.

Viele Grüße
Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

CoolTux

Also bevor das hier ausartet. Ohne Perl kommst du nicht weiter. Ich empfehle dir Dummys mit setList hoch runter stop an zu legen und einem Reading mit der IP des Webservers für den Dummy Rolladen. Dann ein Notify welches eine Sub aufruft und an diese den Schaltbefehl und die IP übergibt
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Wuppi68

Zitat von: Gisbert am 02 Januar 2017, 21:21:21
Hallo Ralf,
die IP-Adresse und die Schaltbefehle sind völlig egal an dieser Stelle. Fhem und notify sollen einen Befehl absetzen, ob der sinnvoll ist, irgendwo ankommt, ist bis zu diesem Punkt erstmal egal.
Wenn ich zu einem Device 3 notifys anlege, dann funktioniert die Schaltung; aber dann hab ich jetzt schon 15 notifys mit Aussicht auf mehr.
Wenn Dir noch etwas einfällt, dann bin ich interssiert.



Hallo Gilbert,

die Dummies hast Du ja schon ....
das Notify auch

wenn Du jetzt im Notify Verbose auf 5 stellst, sollte es auch loslaufen und einige Dinge tun

bei Bedarf kannst Du noch in die vor die Variable Declaration eine Zeile mit

Log3 'nty.Rollade', 5, "Device:$DEVICE Event:$EVENT";

einfügen, dann siehst Du alle Aufrufparameter bei Verbose auf 5 und dann wirst Du entsprechend weiter sehen...

das Notify reagiert aber nur auf die 3 Begriffe in den Klammern vo der Definition
FHEM unter Proxmox als VM

automatisierer

Wenn es nur darum geht die Übersicht zu behalten, dann hier:

define Wohnzimmer.Westseite DOIF\
    (["$SELF:runter"]) ({(system "wget -qO /dev/null http://192.168.178.48/?pin=FunctionRunter")})\
    DOELSEIF\
    (["$SELF:rauf"]) ({(system "wget -qO /dev/null http://192.168.178.48/?pin=FunctionRauf")})\
    DOELSEIF\
    (["$SELF:stop"]) ({(system "wget -qO /dev/null http://192.168.178.48/?pin=FunctionStop")})
attr Wohnzimmer.Westseite do always
attr Wohnzimmer.Westseite readingList Jalousie
attr Wohnzimmer.Westseite room test
attr Wohnzimmer.Westseite setList Jalousie:rauf,runter,stop
attr Wohnzimmer.Westseite webCmd Jalousie


Ein DOIF, inkl. der "Bedienelemente" und aller drei Befehle. Die Befehle habe ich mal so aus deinem ersten Post abgeleitet. Bei mir bleibt FHEM hängen, denke wegen dem wget Befehl, andere System Befehle laufen durch...
Du kannst das auch per
set Wohnzimmer.Westseite Jalousie rauf/runter/stop
ansprechen...

CoolTux

Ich gehe mal davon aus das wir hier nicht nur von einer IP reden sondern von einer per Rolladen oder im besten Fall einer pro Rolladenpaar
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Gisbert

#21
Richtig, es handelt sich um eine IP pro Rollladen.

@automatisierer,
ein DOIF pro Rollladen/Device ist immerhin schon mal ein Fortschritt. Ich werde es ausprobieren, wenn ich wieder Zeit hab.
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

CoolTux

Ich werde Dir bis Wochenende was fertig machen und testen. Wenn du mir versprichst den Code zu verstehen den ich dir gebe damit du ihn selber warten kannst.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

#23
Dummys anlegen


defmod dummyRolladenWohnzimmer1 dummy
attr dummyRolladenWohnzimmer1 readingList ipAdresse
attr dummyRolladenWohnzimmer1 room Test
attr dummyRolladenWohnzimmer1 setList ipAdresse up:noArg down:noArg stop:noArg

defmod dummyRolladenWohnzimmer2 dummy
attr dummyRolladenWohnzimmer2 readingList ipAdresse
attr dummyRolladenWohnzimmer2 room Test
attr dummyRolladenWohnzimmer2 setList ipAdresse up:noArg down:noArg stop:noArg

...



Und so weiter. Versuche sprechende Namen zu finden. Wichtig ist "dummyRolladen" muß am Anfang bleiben.
Nach dem Du die Dummys angelegt hast, musst Du

set dummyRolladenWohnzimmer1 ipAdresse IP

ausführen. Und das ganze pro Rolladen.
Und nun das Notify


defmod notifyRolladenControl notify dummyRolladen.*(up|down|stop) { rolladenControl($NAME,ReadingsVal("$NAME","ipAdresse",0),$EVTPART0) }
attr notifyRolladenControl room Test


Und nun noch folgendes. Kopiere die Datei /opt/fhem/FHEM/myUtilsTemplate.pm nach /opt/fhem/FHEM/99_myUtils_RolladenControl.pm
Danach in FHEM Web unter edit Files auf das File 99_myUtils_RolladenControl.pm gehen und alles im File löschen und folgendes dafür eintragen


##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_RolladenControl_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.
my %cmdSketchPin = (
    'down'                => 'FunctionRunter',
    'up'              => 'FunctionRauf',
    'stop'              => 'FunctionStop'
);




sub rolladenControl($$$) {

       my ($name,$ipRolladen,$cmd) = @_;


       my $url = "http://" . $ipRolladen;
       $url .= "/?pin=" . $cmdSketchPin{$cmd};
   
   
       my($err,$data)  = HttpUtils_BlockingGet({
          url           => $url,
          timeout       => 3,
          method        => "GET",
          header        => "Content-Type: application/xml",
       });


       if( !$data ) {
          Log3 $name, 3, "($name) - empty answer received for $url";
          return undef;
       } elsif( $data =~ m'HTTP/1.1 200 OK' ) {
          Log3 $name, 4, "($name) - empty answer received for $url";
          return undef;
       }


       return;
}



1;


Danach ein reload 99_myUtils_RolladenControl
Das sollte eigentlich alles sein. Bitte dann mal testen.
Bei Fragen oder Problemen einfach melden.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

automatisierer

Zitat von: CoolTux am 03 Januar 2017, 09:28:54
Ich werde Dir bis Wochenende was fertig machen und testen.

ich hab keine Ahnung woran es liegt, aber ich hatte schon den ganzen Tag so nen Wochenendgefühl...  8)

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Gisbert

Hallo CoolTux,

super, aber im Moment scheint die Sonne noch nicht für mich; ich werde erst frühestens am WE wieder Zeit haben.

Ich versuche mich kundig zu machen, dass ich deine Programmierung nachvollziehen kann. Ich habe auch gelegentlich Hilfe hier zuhause, in Form meines Sohnes, wenn ich ihn denn motivieren kann.

Viele Grüße
Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Gisbert

#28
Hallo CoolTux,

super Arbeit, ganz großes Theater, es funktioniert auf Anhieb, vielen lieben Dank !!!

Mit dem Verstehen deiner Programmierung tue ich mich allerdings schwer. :-[
Im Groben kann ich es nachvollziehen, aber von Verstehen bin ich leider weit weg.
Ich verspreche aber, dass ich ich mir Mühe geben werde.

Ich hab noch die folgenden Attribute gesetzt:
attr dummyRolladenWohnzimmerWestseite webCmd Hochfahren:Anhalten:Runterfahren
attr dummyRolladenWohnzimmerWestseite eventMap up:Hochfahren stop:Anhalten down:Runterfahren

Damit kann ich in Fhem durch Anklicken im Webbroser (oder entsprechend auf dem Smartphone) den Rolladen neben einer Automatisierung auch einfach händisch bedienen.

Nochmals vielen Dank
Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

CoolTux

Hallo Gisbert,

Das freut mich das es bei Dir gleich geklappt hat. Der Rest kommt mit der Zeit wenn man sich mehr ins Thema einarbeitet. Und je mehr Du mit FHEM machen willst um so mehr musst Du Dich einarbeiten. Dafür sind dem ganzen fast keine Grenzen gesetzt.
Ich habe zum Beispiel mir letzten Sommer 2 Klimaanlagen von Obi mit WLan besorgt. Die will ich im Winter in FHEM integrieren. Möglich ist das, aber ich muß da noch ne Menge programmieren.
Aber es ist Machbar und das ist das tolle an FHEM.

Dann mal viel Spaß mit Deinen Rolläden.



Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net