[ VERSION 1.2.0 ] 74_AMAD.pm zur Steuerung eines Androidgerätes

Begonnen von CoolTux, 07 August 2015, 09:39:01

Vorheriges Thema - Nächstes Thema

CoolTux

Zitat von: Kamelbullentreiber am 12 November 2015, 09:16:25
Moin,

....perfekt,das war`s.Danke euch beiden


Gruß Thomas

Naja nicht wirklich, mich ärgert das das wir nicht wissen was der Auslöser war. Aber ich freue mich das Du nun erstmal Spaß mit haben kannst   :D
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

LudgerR

Hallo Cooltux,

erstmals  vielen Dank für dein großartiges Modul.  Das war der Zündfunke um mein UserInterface der Haussteuerung  von Infrarot FB  via CUNO  auf  AMAD (Tabletts) umzustellen.

Wenigen Stunden  Test  genügten und ich habe die Premium Version von AutoMagic erstanden.
Beim Testen der Own Reading  Funktion ist mir aufgefallen, dass %20 im Reading nicht  durch Spaces  ersetzt werden.
Das setzen von

Global_fhemcmd = "set  Btn3 on";
Global_own_reading  = " 1447343010039_fhemcmd";

führt  zu folgendem Ergebnis im Reading des fhemdevices

             fhemcmd             set%20Btn3%20on     2015-11-12 16:14:08

Da ich diese Funktion verwenden möchte um per notify in Fhem  Kommandos auszuführen, habe  ich noch Zweifel ob bei der von dir vorgeschlagenen Beispielen wie ,,Meldung Display an" bei konkurrierenden Instanzen Own-Readings  ggf. nicht übertragen werden.

Ist in AutoMagic sichergestellt, dass jede Änderung von ,,Global_own_reading" zu einem Triggering der zugehörigen Flows führt und während dessen Ausführung die Änderungsanforderungen  für ,,Global_own_reading"  von anderen Prozessen geblockt werden und dann erst anschließend nacheinander ausgeführt werden?

VG
LudgerR
Fhem/mosquitto/zigbee2mqtt on PI 5 , 2xCUNO 1xCUL, telegram SONOS,
MQTT2 (Sonoff/Shelly),Buderus GB-112,CanOverEthernet(UVR67/CIM)
Tasmota 20+ Z2M 80+ Geräte

CoolTux

Hallo Ludger

Da hast Du aber einiges durcheinander gebracht. OwnReading ist wie der Name schon sagt für eigene Readings. Du kannst damit Daten einsammeln oder auf Ereignisse reagieren um diese Ereignisse dann als Reading dar zu stellen.

Du möchtest aber Befehle absenden. Das machst du am besten mittels einer http Request Aktion auf die AMAD Comm Bridge.
Was genau möchtest Du denn machen? Welche AMAD Version verwendet Du?



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

LudgerR

Hallo Cooltux,

So abwegig  finde ich es nicht, das Tablett als Universal-Steuerungsgerät zu interpretiere
einmal als

      Schalter   für die  Rolladen :    Hoch, Runter,Position 1,2,...9
      Lichtschalter:  an, aus, dim xx

dann
   als FHT Steuerungsgerät :
      Wechsel  Tag, Nacht, Auto.... Betrieb
      Setzen der Wunschtemperatur etc.
und  als

   Heizungssteuerungsgerät:
      Heizung:  an, aus,
      Nacht, Tag, Auto Betrieb
      Warmwasser: an, aus

zu interpretieren und das entsprechende ,,Auslösen  der Schalter"  als Ereignis  in entsprechende Readings abzubilden.

Das  AMAD Device vom Tablett ist für mich ebenfalls naheliegender  als die Bridge, da der AMAD Device Name  automatisch in den einzelnen Events auftaucht und im notify  entsprechend ausgewertet werden kann.

Aus meiner Sicht ist die Basis (Kommunikations-) Funktionalität da, um die Steuerungsbefehle von meinen zwei  Tabletts (eins im WZ EG, eins im Bad OG) komfortabel  abzubilden und auszuwerten.

Was fehlt  ist ein Feedback, dass der entsprechende http Request erfolgreich ausgeführt wurde.

Eine direktes Ausführung des ,,Own-Reading"  flows  bzw. eines entsprechenden flows mit ,,Warte-Option" und return code wäre wünschenswert.   

Gruß
LudgerR
Fhem/mosquitto/zigbee2mqtt on PI 5 , 2xCUNO 1xCUL, telegram SONOS,
MQTT2 (Sonoff/Shelly),Buderus GB-112,CanOverEthernet(UVR67/CIM)
Tasmota 20+ Z2M 80+ Geräte

LudgerR

Hallo Cooltux,

habe die Development Version von November 5 von github geladen und festgestellt, dass auch dort die durch %20  gekennzeichneten Leerzeichen nicht durch Spaces in den Readings ersetzt wurden.

Gruß,
Ludger
Fhem/mosquitto/zigbee2mqtt on PI 5 , 2xCUNO 1xCUL, telegram SONOS,
MQTT2 (Sonoff/Shelly),Buderus GB-112,CanOverEthernet(UVR67/CIM)
Tasmota 20+ Z2M 80+ Geräte

CoolTux

Hallo Ludger,

OwnReadings ist von Ronny(RoBra81), er wird Dir da eventuell besser helfen können. So wie ich das sehe ist es sogar möglich die Ersetzungsroutine raus zu nehmen aus dem Flow. Die %20 sollten nicht mehr nötig sein.
Wenn Du für jeden Deiner Flows einen anderen Readingsnamen nimmt wird es keine Probleme geben. Aber solltest du immer den selben Namen nehmen so kann es vielleicht passieren das das Reading zu schnell überschrieben wird.

Ich verstehe immer noch nicht genau was Du machen möchtest. Das Tablet als universal Steuerungsgerät ist ja ok, aber das macht man mit nem UI. FHEMweb oder TabletUI oder SmartVisu. AMAD ist dafür nicht gedacht. Wie willst Du das set bla bla denn auslösen? Knopf, Sprache?


Gruß
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

LudgerR

Hallo Cooltux,

So wie ich bisher mit einer Sequenz  von 2 Tasten auf der Fernbedienung  alle wesentlichen  täglichen Aktionen im Haus steuere , beabsichtige ich dies nun vom Android Gerät (Tablett und Smartphone) per AutoMagic  flows   zu realisieren. Insgesamt vier Flows,  jeweils einen  für die Rolladen, FHT's ,Heizung  und Steckdosen die durch einen Shortcut  getriggert werden.   

Bei den Rolläden z.B.  verwende ich ein "Eingabe Menü"  für die gewünschte Rolladenposition (Hoch,Pos 1, Pos 2,.....,Pos 9,Runter) gefolgt von einer "Mehrfachauswahl" für die Räume.  Anschließend entweder  Abbruch oder http Request  (z.Zt. via Own-Readings realisiert).

Wie beim bisher verwendeten  IR-FB Interface ist dies sehr gradlinig und einfach.

Funktioniert auch sehr simpel und schnell  ohne großen Traffic vom Smartphone unterwegs:

          VPN  per shortcut einschalten.
         Anschließend per shortcut die Heizung auf Abwesenheit-  bzw. Anwesenheitsmodus stellen. 

Für die wesentlichen Aktionen will  (brauche) ich kein FHEMweb  Interface.

Habe heute mal  die Spracheingabe mit AutoMagic für ein derartiges Zenario getestet.  Wirklich verblüffend wie man mit jeweils drei Wörtern solch einen Menübaum steuern kann.

Im Falle der Rolladen z.B. läßt sich durch das Kommando:

   "Rolladen   hoch  Küche Wohnzimmer Bad Büro"

oder bzw.

   "Rolladen   6  Büro Bad Küche Wohnzimmer"

in einem Flow leicht ein "Mehrfach Eingabe Menu"  mit der Überschrift  "Rolladen hoch für:" bzw. "Rolladen auf Position 6 für:"  mit einer  Liste der Räume mit entsprechend angekreuzten  Zimmer erzeugen, das nur noch per Knopfdruck  bestätigt werden muss.
Ggf. Kann man ein Zimmer noch vorher ergänzen,  sollte man nicht alle Zimmernamen  korrekt ausgesprochen haben.

Gruß
Ludger

Fhem/mosquitto/zigbee2mqtt on PI 5 , 2xCUNO 1xCUL, telegram SONOS,
MQTT2 (Sonoff/Shelly),Buderus GB-112,CanOverEthernet(UVR67/CIM)
Tasmota 20+ Z2M 80+ Geräte

CoolTux

Guten Morgen,

Ich glaube zu verstehen. Meine Empfehlung geht dennoch dahin das Du einfach am besten am Ende eines jeden Flows ein HTTP Request ab schickst und zwar mit dem direkten Schaltbefehl.
Dafür aktivierst Du in der AMADCommBridge das Attribut expert mit 1 und erstellst einen HTTP Request

URL = http://{global_fhemip}:8090

REQUEST METHODE = POST

CONTENT TYPE = Genereller Text
                                text/plain

DATEN = set lampe2 on; set rolladen2 50; set bla bla

EIGENE HTTP HEADERS
setze eigene HTTP Hader = Haken
             FHEMDEVICE: {global_fhemdevice}
             FHEMCMD: set



Fertig. Damit sollte dann direkt geschalten werden. Ich mache das so bei meiner Spracheingabe. Grund ist das ich für Spracheingabe zur Zeit noch AutoVoice Plugin und Automagic nehme. Will aber in nächster Zeit auf die AMAD Spracheingabe umschwenken. Da ist allerdings noch einiges zu tun, da ich so gut wie alles mit Sprache steuer.

Wenn Du magst kannst ja einen exemplarischen Flow einfach mal hier ein stellen oder mir zu senden, dann kann ich mal schauen.




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

RoBra81

Guten Morgen,

ich werde mir die Sache mit den %20 in den OwnReadings am Wochenende mal ansehen.

Ronny

CoolTux

Zitat von: RoBra81 am 13 November 2015, 07:45:13
Guten Morgen,

ich werde mir die Sache mit den %20 in den OwnReadings am Wochenende mal ansehen.

Ronny

Hallo Ronny

Versuche mal den Code mit dem ersetzen aus den Flows raus zu nehmen, ich denke das die Anpassungen welche in letzter Zeit beim Modul gemacht wurden ausreichen damit das ersetzen nicht mehr nötg ist.



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

CoolTux

Hallo Leute,

Mal kurz zur Info.
Ich betreibe gerade etwas Code pflege für die Version 1.0. Unteranderem wird es in der Version dann auch möglich sein die AMADCommBridge um zu benennen. Falls da Interesse besteht. Ausserdem wird vor dem aller ersten statusRequest ein Test gemacht ob das Reading für die FHEM Server IP in der Bridge gesetzt wurde. Somit erfolgt keine Verbindungsaufnahme mit dem Android Gerät bevor nicht die IP des fhem Servers bekannt ist.




Im Moment bin ich auch noch stark am überlegen ob die für die Version 1.2 nicht die Bridge als eigenes Modul auslager. Damit könnte man dann einige Stolpersteine umgehen und den Code übersichtlicher gestalten.
Desweiteren wäre es dann möglich in dem man nur die Bridge anlegt automatisch nach vorhanden Automagic Devices zu suchen und an zu legen (auto create)

Das sind si meine Ideen für Version 1.2     ;D
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

LudgerR

Hallo Cooltux,

Auf  deine Empfehlung hin

,,..... Meine Empfehlung geht dennoch dahin das Du einfach am besten am Ende eines jeden Flows ein HTTP Request ab schickst und zwar mit dem direkten Schaltbefehl. Dafür aktivierst Du in der AMADCommBridge das Attribut expert mit 1 und erstellst einen HTTP request......."

bin ich dieser gefolgt und habe auch mal einen Blick unter die Haube gemacht.
Ja ich stimme dir zu, dass dies für meinen Zweck der richtige Ansatz ist.

Falls ich anstelle

DATEN = set lampe2 on; set rolladen2 50; set bla bla

DATEN = setreading     {global_fhemdevice}  'fhemcmd'  "set Btn3 on"

setze habe ich genau die bisher von mir  genutzte Funktionalität.

Was mir jetzt noch für eingehende http Requests fehlt ist  aussagefähiger Response Code.
Zur Illustration  habe ich mal deinen Code quick and dirty  für meine Zwecke modifiziert.


    elsif ( $data[0] =~ /FHEMCMD: set\b/ ) {
        my $fhemCmd = $data[1];
       
        $response = fhem ("$fhemCmd") if( ReadingsVal( "AMADCommBridge", "expertMode", 0 ) eq "1" );
readingsSingleUpdate( $brihash, "receiveFhemCommand", $fhemCmd, 1 );

        my $c = $hash->{CD};
        print $c "HTTP/1.1 200 OK\r\n",
             "Content-Type: text/plain\r\n",
             "Content-Length: ".length($response)."\r\n\r\n",
             $response;


Auf diese Weise kann ich auf der Tablett-Seite den Response auswerten und entsprechend reagieren.
Spricht etwas dagegen solch eine Funktionalität  zumindest  im Experten-Modus anzubieten?

Es muss ja nicht bei der allgemeinen  unter  "FHEMCMD:  set" 
implementiert werden.  Es würde mir reichen etwas Derartiges unter  " FHEMCMD: expert_set"
zu haben.

Und wenn ich schon bei meiner Wunschliste bin, würde ich gerne Globale Variablen von AutoMagic per set Kommando aus fhem  erzeugen/ändern.

Meinetwegen wiederum nur im Expert-Modus und mit einer Limitierung des Namensraum  auf den Prefix   "Global_fhem_".

Damit hätte ich alle Freiheiten auf dem Android Device flows per Global Variabeln zu triggern einschließlich Parameterübergabe bzw. ein UmschaltWidget  von AutoMagic zur Status-Anzeige von der  Waschmaschine bzw  dem Geschirrspüler  zu nutzen.

Gruß,
Ludger
Fhem/mosquitto/zigbee2mqtt on PI 5 , 2xCUNO 1xCUL, telegram SONOS,
MQTT2 (Sonoff/Shelly),Buderus GB-112,CanOverEthernet(UVR67/CIM)
Tasmota 20+ Z2M 80+ Geräte

CoolTux

Hallo Ludger,

Deine Anfrage muß ich mir mal durch den Kopf gehen lassen und drüber schlafen.
Also entweder reden wir aneinander vorbei oder aber ich verstehe es nicht. Es ist im übrigen durchaus möglich das ich es nicht verstehe. Solche komplexen Sachen schriftlich zu bespreche ist immer anstrengend.

Aber mal kurz zu Deinem wenn ich aus set setreading mache Frage. Hast Du mal im Code geschaut. Da gibt es bereits setreading als http Request.

In Deinem Fall wäre das

URL = http://{global_fhemip}:8090

REQUEST METHODE = POST

CONTENT TYPE = Genereller Text
                                text/plain

DATEN = fhemcmd@@set Btn3 on@@@@

EIGENE HTTP HEADERS
setze eigene HTTP Hader = Haken
             FHEMDEVICE: {global_fhemdevice}
             FHEMCMD: setreading


Hiermit schreibt Dir AMAD in Dein Device automatisch ein Reading Namens fhemcmd mit dem Wert set Btn3 in
Das global_fhemdevice hat nichts im Datenfeld zu suchen. Das gehört in die URL Zeile.




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

LudgerR

Hallo Cooltux,

habe nur mal Deinen Vorschlag umgesetzt und mal getestet fhem Kommados direkt über die Bridge abzusetzen.
Dabei habe ich im ersten Test das existierende fhem  Kommando "setreadings" verwendet und siehe da ich konnte eine ähnliche  Funktionalität erzeugen wie bereits vorhande  Own-Reading Funktion, nur mit dem wesentlichen Unterschied das ich den http Request direkt ausführe und somit die Kontrolle im FLow behalte.

Anstelle des unten beschriebenen  Flows

Zitat*****
    Beiträge: 659
        Profil anzeigen E-Mail Private Mitteilung (Online)

Antw:[ VERSION 0.8.3 ] 74_AMAD.pm zur Steuerung eines Androidgerätes
« Antwort #522 am: Heute um 19:23:58 »

    Zitat

Hallo Ludger,

Deine Anfrage muß ich mir mal durch den Kopf gehen lassen und drüber schlafen.
Also entweder reden wir aneinander vorbei oder aber ich verstehe es nicht. Es ist im übrigen durchaus möglich das ich es nicht verstehe. Solche komplexen Sachen schriftlich zu bespreche ist immer anstrengend.

Aber mal kurz zu Deinem wenn ich aus set setreading mache Frage. Hast Du mal im Code geschaut. Da gibt es bereits setreading als http Request.

In Deinem Fall wäre das

URL = http://{global_fhemip}:8090

REQUEST METHODE = POST

CONTENT TYPE = Genereller Text
                                text/plain

DATEN = fhemcmd@@set Btn3 on@@@@

EIGENE HTTP HEADERS
setze eigene HTTP Hader = Haken
             FHEMDEVICE: {global_fhemdevice}
             FHEMCMD: setreading


Hiermit schreibt Dir AMAD in Dein Device automatisch ein Reading Namens fhemcmd mit dem Wert set Btn3 in
Das global_fhemdevice hat nichts im Datenfeld zu suchen. Das gehört in die URL Zeile.



habe ich folgendes gemacht:

URL = http://{global_fhemip}:8090

REQUEST METHODE = POST

CONTENT TYPE = Genereller Text
                                text/plain

DATEN = setreadings  {global_fhemdevice}  'fhemcmd'  'set Btn3 on'

EIGENE HTTP HEADERS
setze eigene HTTP Hader = Haken
             FHEMDEVICE: {global_fhemdevice}
             FHEMCMD: set




und die gewünschten Readings im global fhemdevice so wie ich es vorher mit Own-Reading erzeugt hatte.
Das ich "setreadings" als fhem Kommando benutzt hatte war nur eine Spielerei von mir (Sorry dafür).

Anstelle dessen hätte ich auch

DATEN = {ReadingsVal('FS20_TFK_1','state','na')}


Fhem/mosquitto/zigbee2mqtt on PI 5 , 2xCUNO 1xCUL, telegram SONOS,
MQTT2 (Sonoff/Shelly),Buderus GB-112,CanOverEthernet(UVR67/CIM)
Tasmota 20+ Z2M 80+ Geräte

LudgerR

 jetzt gehts weiter

.......


Anstelle dessen hätte ich auch

DATEN = {ReadingsVal('FS20_TFK_1','state','na')}

verwenden können um mir den Status des FS20 devices "FS20_TK1-1" als response code zu holen.
Das funktioniert natürlich nur mit meiner qzuick and dirty Modifikation deines Codes.

{ReadingsVal('FS20_TFK_1','state','na')}

erscheint dann direkt in deinen Readings in der Bridge. Falls der code nicht den richtigen response Wert liefert in FHEMweb das Reading kopieren und direkt im obersten Eingabe Fenster ausprobieren und Anschließen auf Flow Seite anpassen.

Gruß
Ludger
Fhem/mosquitto/zigbee2mqtt on PI 5 , 2xCUNO 1xCUL, telegram SONOS,
MQTT2 (Sonoff/Shelly),Buderus GB-112,CanOverEthernet(UVR67/CIM)
Tasmota 20+ Z2M 80+ Geräte