FHEM Connector für Amazon Alexa mit S7 Adapter verknüpfen

Begonnen von ChrisLenz, 29 August 2019, 16:30:35

Vorheriges Thema - Nächstes Thema

ChrisLenz

Hallo,
ich hab mal eine frage.

Ich habe den S7 Adapter mit der Ha-Bridge laufen um mein Licht über Alexa zu steuern, funktioniert auch einwandfrei.
Ich finde die direkte Programmierung über den Connector für Amazon Alexa aber etwas angenehmer und vorteilhafter.
Gibt es jemanden der es schon geschafft hat?
Die Verbindung von FHEM zum Alexa Skill funktioniert, aber ich finde keine Geräte
Vielleicht hat ja jemand eine Beispiel Programmierung?
define Temp.Wohnz S7_ARead db 20 4 float

attr Temp.Wohnz IODev CPU315
attr Temp.Wohnz event-on-change-reading state
attr Temp.Wohnz group 1.0.1.Temperatur
attr Temp.Wohnz icon temp_inside
attr Temp.Wohnz room 01.Wohnzimmer
attr Temp.Wohnz stateFormat {sprintf("%.1f",ReadingsVal($name,"state",0))." C°"}

define Wz.Wandlampe S7_DWrite db 23 0.0
attr Wz.Wandlampe IODev CPU315
attr Wz.Wandlampe devStateIcon .*:toggle:TRIGGER
attr Wz.Wandlampe event-on-change-reading state
attr Wz.Wandlampe group 1.0.0.Licht EG
attr Wz.Wandlampe icon IR
attr Wz.Wandlampe room 01.Wohnzimmer

zur Zeit sieht das so bei mir aus.

Oder funktioniert das gar wegen der Siemens Steuerung

MadMax-FHEM

Du kannst entweder einen Dummy und Notify "zwischenschalten", das geht auf jeden Fall.

Oder du beschäftigst dich mit homebridgeMapping...

Weil alexa-fhem "erkennen" muss, um "was" es sich handelt und "was" das Gerät "kann"...

Entweder passen die Readings (z.B. temperature statt Temperatur) und die entsprechenden "set Befehle" (z.B. on/off) ODER es muss mittels homebridgeMapping eben entsprechend "erläutert" werden welcher Amazon Befehl wie auf das Gerät "gemapped" werden muss bzw. eben der Zustand "zurück" damit alexa-fhem/Amazon das "versteht"...

Auch genericDeviceType "unterstützt" dabei...

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)

ChrisLenz

Hallo Joachim,
Danke schön mal für die schnelle Antwort, bin leider heute erst dazu gekommen mich noch mal mit dem Skill auseinander zu setzen!
Könntest du mir mal ein Beispiel tippen für einen dummy z.B für den Taster Wandlampe
Die Verbindung steht, Amazon findet wohl auch Geräte nur steuern kann ich die nicht!
Viele Grüße
Chris

MadMax-FHEM

Hi Chris,

jep geht klar, hier eine "raw definition" (also per raw definition einfügen / oder alles per web interface halt "einzeln"):


defmod dmControlLight dummy
attr dmControlLight alexaName Wandlampe
attr dmControlLight genericDeviceType switch
attr dmControlLight room alexa
attr dmControlLight setList on off


Der Raum alexa ist optional (mache ich wegen der "Ordnung")...
...beim alexaName halt schauen was du noch nicht hast.

Und dann brauchst du noch ein notify.
Das notify reagiert, wenn die "Dummy-Lampe" geschalten wird und schaltet dann die "echte Lampe" an (also was immer eben an/aus gehen soll):


defmod nControlLight notify dmControlLight:(on|off) {if($EVENT eq "on"){fhem("set SIMATIC on")}else{fhem("set SIMATIC off")}}


Statt "set SIMATIC on" bzw. "set SIMATIC off" (inkl. der Anführungszeichen) musst du halt den entsprechenden Befehl eingeben, der nötig ist damit entsprechend geschalten wird...

Viel Erfolg, 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)

ChrisLenz

hi Joachim,
danke schon mal, sehr cool.
werde es heute Abend mal testen, dachte mir das schon mit dem notify, habs nur noch nicht so oft gemacht!
FHEM dann doch etwas anders zu programmieren als eine S7  ;D

Vielen Dank, hast mir sehr geholfen

ChrisLenz

Hätte wohl noch eine frage,
in der Beschreibung wird immer nur von Schaltern gesprochen, funktioniert das ganze auch mit Tastern???

MadMax-FHEM

Hmm, Taster?

Du meinst das in der S7 sind "nur" Taster!?

Hmmm.
Was dann halt nicht bzw. schwer/aufwändig geht ist, dass der Status in der Alexa-App immer korrekt ist...

Weil:

"Alexa schalte das Licht ein" -> Dummy geht auf "on" -> Notify reagiert und schaltet den "Taster" (der geht halt wieder zurück auf "aus")

Dass der Taster wieder zurück geht "sieht" Amazon halt nicht, daher bleibt das Licht in der Alexa-App halt "eingeschaltet", weil ja der Dummy auch nicht "zurück fällt"...
...aber das Licht brennt ja auch noch, oder?

D.h. dein S7 Schalter ist ein "Toggle-Taster"!? Also jede Aktivierung ändert den Aktor:

1. Aktivierung -> Licht an
2. Aktivierung -> Licht aus
3. Aktivierung -> Licht an

usw. ?

Oder hast du einen "Taster" für an und einen für aus?

Letzteres ist dann kein Problem, da du einfach im Notify entscheidest (je nachdem was der Dummy "schickt" [an oder aus]) welchen "Taster" du setzt...
...bei Ersterem wird es halt schwer.

Weil du dann ja nicht weißt, ob das Licht grad an oder aus ist, also was der nächste Toggle dann tut...
Aber ich denke (hoffe) du kannst den tatsächlichen Zustand des Aktors rauskriegen und dann ist es auch kein Problem...
...wenn du das nicht kannst würde halt ein "Alexa schalte das Licht ein" es halt auch mal ausschalten ;)

Oder habe ich das mit dem Taster ganz falsch verstanden, dann brauche ich mehr "Licht" ;)

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)

ChrisLenz

Also in der S7 verarbeite ich nur Taster Signale, dadurch kann ich vom Tablet/Handy oder am Taster selber die Lampe ein oder aus (schalten)
Die Rückmeldung kommt von der S7 und schaltet mir ein Bit für FHEM, bzw. Für das Tablet!
Ob Alexa jetzt die richtige Rückmeldung hat ist mir ja eigentlich egal, könnte ja theoretisch beide Befehle (an oder aus) geben und sie würde mir immer ein Impuls zum Tasten geben!
Als App Steuerung benutze ich FHEM und da sollte die Rückmeldung ja dann Stimmen.
Ich würde den ja quasi den Dummy nur benutzen damit Alex den ,,Taster" über den Skill überhaupt findet oder?

MadMax-FHEM

Zitat von: ChrisLenz am 12 September 2019, 14:35:36
Also in der S7 verarbeite ich nur Taster Signale, dadurch kann ich vom Tablet/Handy oder am Taster selber die Lampe ein oder aus (schalten)
Die Rückmeldung kommt von der S7 und schaltet mir ein Bit für FHEM, bzw. Für das Tablet!

Also so wie ich dachte, bzw. sicherheitshalber:

Du schaltest "in der SIMATIC" (was hast du denn da, nur Interesse ;)  ) einen "Taster".
Daraufhin schaltet die SIMATIC dann echt was ein/aus und meldet das dann zurück an fhem (an "was" dort?) damit dann eine Anzeige stimmt!?
Über "das was immer das ist" zur Anzeige kannst du per "drücken" auch schalten!?
Dann kannst du doch entweder schon "das" nehmen und versuchen Alexa "beizubringen" (statt zusätzlicher Dummy/Notify) oder "das" per Notify schalten (so wie per Weboberfläche), statt den Taster der SIMATIC...
...dann würde auch der Zustand passen...


Zitat von: ChrisLenz am 12 September 2019, 14:35:36
Ob Alexa jetzt die richtige Rückmeldung hat ist mir ja eigentlich egal, könnte ja theoretisch beide Befehle (an oder aus) geben und sie würde mir immer ein Impuls zum Tasten geben!

Nicht ganz also irgendwie ja ;)

Du musst Alexa schon sagen, ob du Licht an oder aus haben willst ;)

Daraufhin wird eben der Dummy auf on oder off gesetzt.
Ein Notify wie folgendes reagiert auf on und off:

define nNotifyOnOff notify AlexaDummy:(on|off) set SIMATIC Taster on/off/toggle/?

Würde praktisch egal was du zu Alexa sagst immer den SIMATIC Taster "betätigen"...
...ist halt nur komisch, wenn du sagst: "Alexa schalte das Licht aus" und es wäre schon aus, dann würde es halt an gehen ;)

Klar bei Licht das man sieht ist es egal bzw. da kann man als Mensch natürlich passend Anweisungen geben...
...aber "komisch" bleibt es trotzdem ;)


Zitat von: ChrisLenz am 12 September 2019, 14:35:36
Als App Steuerung benutze ich FHEM und da sollte die Rückmeldung ja dann Stimmen.

Vermutlich ja ;)

Zitat von: ChrisLenz am 12 September 2019, 14:35:36
Ich würde den ja quasi den Dummy nur benutzen damit Alex den ,,Taster" über den Skill überhaupt findet oder?

Ja, so war die erste Idee...
...bzw. halt: einfach umzusetzen und funktioniert.

Aber trotzdem jetzt noch mal:

was nimmst du denn zur Statusanzeige bzw. Bedienung in fhem!?

Poste doch mal ein list davon...

Wenn das schon ein Dummy etc. ist/wäre, dann kann man den schon vermutlich auch für Alexa "erkennbar" machen und fertig...
...inklusive, dass der Status stimmt/stimmen sollte und sogar in der Alexa-App...

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)

ChrisLenz

Ich schick heute Abend mal die Rückmeldung!
Ist Quasi wie der Taster programmiert in fhem,
Define wz.wandlampe.rue S7_DRead db21 0.0
Taster kennst du ja einmal hab ich einen DRead und einmal einen DWrite

Aber ich schick das heute Abend mal

MadMax-FHEM

#10
Hm, das ist also ein fhem-S7-Dingens...

Da hab ich leider keine Ahnung... :-|

Bzw. wird man dann nicht um homebridgeMapping drumrum kommen, wenn es überhaupt geht.

Aber trotzdem mal:

wie ist dann der Status in fhem "richtig"?
Oder ist das "nur" das SIMATIC-Dingens für die Anzeige/Steuerung aus fhem-Web?
(und niht der "Taster" den du für das Notify dachtest!?)


EDIT: grad mal nach S7_DRead geschaut. Ok, also prinzipiell kenne ich SIMATIC ja ;) und weiß dass du damit (vermutlich) den Status ausliest!? Zum Schalten hast du dann noch extra was, also einen S7_DWrite (auf ein anderes Bit!?) das dann intern in der SIMATIC ein "Taster" ist und damit eben den Aktor toggelt und an die Adresse des S7_DRead zurück "spiegelt"!? Was nutzt du zur Anzeige bzw. wie machst du das, dass du per "Anzeige" (in fhem-Web?) wo ja "nur" der S7_DRead GELESEN und angezeigt wird auch schalten kannst (also auf den S7_DWrite "einwirkst"). Das ist mir noch etwas "schleierhaft"... ;)


Welche "Befehle" kann das Ding bzw. wie schaltest du damit und wo/wie siehst du dann den Status!?
Aber ich warte mal das list ab, dann sehe ich vielleicht was...

Ansonsten wie geschrieben: Dummy und Notify sollte auf jeden Fall gehen.

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)

ChrisLenz

Hallo Joachim,
also Schalter funktioniert nicht!
Alexa hat den Dummy gefunden, aber eben nur als schalter und das klappt nicht, meien sps erkennt das nicht!
Ich muss mehrmals den Schalter über Alexa schalten damit die Lampe an oder ausgeht.

#Taster Licht
define Wz.Wandlampe S7_DWrite db 23 0.0
attr Wz.Wandlampe IODev CPU315
attr Wz.Wandlampe devStateIcon .*:toggle:TRIGGER
attr Wz.Wandlampe event-on-change-reading state
attr Wz.Wandlampe group 1.0.0.Licht EG
attr Wz.Wandlampe icon IR
attr Wz.Wandlampe room 01.Wohnzimmer

#Rueckmeldungen Lampen
define Wz.Wandlampe.Rue S7_DRead db 21 0.0
attr Wz.Wandlampe.Rue IODev CPU315
attr Wz.Wandlampe.Rue event-on-update-reading state
attr Wz.Wandlampe.Rue group 1.0.0.Licht EG
attr Wz.Wandlampe.Rue room 01.Wohnzimmer,17.Zentral Licht
define Wz.Deckenlampe.Rue S7_DRead db 21 0.1

Hier mal die FHEM Taster und die Rückmeldung

      A     "Wohn_Ta.1"
      =     %L5.0
      BLD   103
      A     "Wohn_Ta.2"
      =     %L5.1
      BLD   103
      A     "DB23_BINAER_VON_FHEM".Wz_Wandlampe
      =     %L5.2
      BLD   103
      A     "Wohn1_Li_Ansch"
      =     %L5.3
      BLD   103
      A(
      O     "Licht_Zentral_AUS"
      O     "DB23_BINAER_VON_FHEM".Zentral_Aus_EG
      )
      =     %L5.4
      BLD   103
      CALL  "FB10 Licht anschalten", "DB198 Licht Wohn, Wandlampen"
         Taster1          :=%L5.0
         Taster2          :=%L5.1
         Taster3          :=
         Licht_FHEM       :=%L5.2
         Panel            :=%L5.3
         Zentral_Aus      :=%L5.4
         Rueckmeldung     :="Wohn1_Hi_Me_Rue"
         FHEM_Rückmeldung :="DB21_BINAER_AN_FHEM".Wz_Wandlampe_Rue
         Lampe            :="Wohn_Licht1_AN"
      NOP 0

Hier mal die DB verarbeitung in der SPS S7

Vielleicht wird es dir jetzt etwas klarer, denke mit dem Connector werde ich warten müssen bis dieser auch taster erkennt, vielleicht werde ich mal mit den Temperaturen befassen, wäre cool wenn ich es hinbekomme das Alexa mir die Temperartuen an sagt
Aber auch da  werde ich mich erst mal ein lesen müssen,
bin mir auch nicht sicher ob der Connector von FHEM parallel mit der HABridge auf dem Raspberray läuft

define Temp.Wohnz S7_ARead db 20 4 float
attr Temp.Wohnz IODev CPU315
attr Temp.Wohnz event-on-change-reading state
attr Temp.Wohnz group 1.0.1.Temperatur
attr Temp.Wohnz icon temp_inside
attr Temp.Wohnz room 01.Wohnzimmer
attr Temp.Wohnz stateFormat {sprintf("%.1f",ReadingsVal($name,"state",0))." C°"}

MadMax-FHEM

#12
Bitte die lists etc. in "code-Tags" das '#' im "Menü"...

Also d.h. die SIMATIC braucht unbedingt eine Taster-Bedienung!?

Also ein: on - off um zu schalten!?

Und zwar immer ein "on - off"!?

Du kannst beim Dummy die setExtenions aktivieren (ist ein Attribut, habe ich noch nie verwendet, kenne es nur ;)  ).
Damit sollte auch ein Dummy on-for-timer können...

Dumm nur, dass du dann ein homebridgeMapping brauchst, welches von on/off immer auf on-for-timer mapped...

Was du mal versuchen kannst:

"Alexa schalte AlexaDummy ein" (AlexaDummy dann durch den Namen den du bei alexaName vergeben hast nat. ;)  )

Dann über die Weboberfläche:

set AlexaDummy off

Hier dann AlexaDummy durch den Namen (also wo in der Detailansicht NAME steht) ersetzen...

Poste doch mal ein list von dem Notify und dem Dummy...

EDIT: statt dem homebridgeMapping geht evtl. auch ein weiterer Trick, vors. das mit dem Webinterface, also den "off" nachzuschicken klappt...

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)

ChrisLenz

ich versuche dir das mal WE zu schicken, für heute ist schluss, morgen noch mal arbeiten
Schönen Feierabend noch

MadMax-FHEM

#14
Jep, klar. Ok.

Nur noch mal zur Sicherheit:

Der Dummy wird gefunden und du kannst ihn per Sprache schalten!?
Zu sehen an der "Glühbirne" in der Weboberfläche...
Das Notify reagiert, also das SIMATIC Bit wird gesetzt? (nur halt nicht zurückgesetzt, also Schalter nicht Taster)

Wenn das alles zutrifft, dann mal das Bit zurücksetzen.

Dann per Sprache schalten und manuell per Weboberfläche zurücksetzen (also Taster "spielen"):
- Per Sprache einschalten.
- Und (sofort) danach mal was ich dir geschrieben habe: set AlexaDummy off in das Webcmd eingeben
(richtigen Namen nat. nehmen! ;)  )

Wenn es dann geht wie es soll, zumindest mal für das Einschalten...
...Ausschalten würde dann ebenso gehen nur, musst du halt erneut sagen: "Alexa schalte das Licht ein" (erst mal dumm, dass du immer "ein" sagen musst, obwohl du "aus" haben willst ;)  ).
Aber darum kümmern wir uns, wenn es so klappt...
...wenn nicht, hmmm dann wird es wohl doch noch aufwändiger...

Andere Frage: warum brauchst du auf SIMATIC-Seite unbedingt einen Taster? Kannst du das nicht auf Schalter-Funktionalität umprogrammieren!?

Dann mal gute Nacht, 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)