[AMADNG] AMAD 4.2 The Next Generation of AMAD with Tasker Support

Begonnen von CoolTux, 25 Mai 2017, 18:24:49

Vorheriges Thema - Nächstes Thema

the ratman

servus,
ich hab da wieder mal ne dumme frage ...

ists möglich, einen androiden von 2 oder 3 fhem's aus anzusprechen?

grund: meine testsysteme wollen auch mal mit den androiden reden, ohne dass man gleich am androiden automagic rumwerkeln muß.
→do↑p!dnʇs↓shit←

CoolTux

Leider nein, ausser du richtest DNS mit round Robbin ein.
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

the ratman

schade

nur, falls du mal vor hast, sowas zu basteln ...
könnte man nicht "einfach" die globalen vars zu den flows legen und dann einfach mehre durchnummerierte flows mit den entsprechenden vars basteln?
wäre dann sogar der anfang, über amad verschiedene fhem's miteinander plappern zu lassen - könnte interessant sein, auch wenns ähnliches/direkteres schon gibt ...
→do↑p!dnʇs↓shit←

Schlimbo

Hallo Leon,
bin gerade dabei den Automagic Teil auf Tasker zu migrieren, der Weg von Tasker zum AMAD Device funktioniert schon, auch die Dialogführung zur Ersteinrichtung konnte ich mit Tasker nachbilden.
Ein großer Nachteil an Tasker ist, dass es hier keinen integrierten Web Server gibt, um Befehle von AMAD zu empfangen muss ich deshalb auf einen anderen Dienst ausweichen wie z.B AutoRemote oder TNES.
Damit ich aber die AMAD Befehle an eines dieser externen Gateways weiterreichen kann wäre es schön, wenn du hierfür für AMADDevice noch ein Reading (lastSetCommand) spendieren könntest, in dem dann immer der letzte Befehle steht.

In 74_AMADDevice.pm Zeile 716 müsste hierfür folgendes ergänzt werden:
readingsSingleUpdate( $hash, "lastSetCommand", $uri, 1 );


Gruß Schlimbo

CoolTux

Hallo Schlimbo,

Das klingt aber interessant. Das Reading kann ich gerne bereitstellen. Ist das wirklich die ganze Änderung die auf Modulseite benötigt wird? Kann ich mir fast nicht vorstellen.


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

Schlimbo

Hallo Leon,
hab jetzt doch noch etwas mehr geändert.
bei "lastSetCommand" hat mich die IP und der Port am Anfang noch gestört.
Habe auch ein neues Attribut eingefügt "disableSetCmd" ist das auf "1" gesetzt wird die Zeile
IOWrite($hash,$amad_id,$uri,$header,$method);
nicht ausgeführt, sondern nur das Reading "lastSetCommand" befüllt.
Schau dir den Patch bitte mal an, ob das so Okay für dich ist.

Gruß Schlimbo

StephanFHEM

Hallo,

nach letztem Update und FHEM-Neustart habe ich zwei PERL-Fehler im Log

2017.12.06 22:41:23 1: PERL WARNING: Use of uninitialized value $json in concatenation (.) or string at ./FHEM/73_AMADCommBridge.pm line 680.
2017.12.06 22:41:23 1: PERL WARNING: Use of uninitialized value $json in concatenation (.) or string at ./FHEM/73_AMADCommBridge.pm line 682.


Grüße
Stephan

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

CoolTux

Zitat von: Schlimbo am 25 November 2017, 11:30:22
Hallo Leon,
hab jetzt doch noch etwas mehr geändert.
bei "lastSetCommand" hat mich die IP und der Port am Anfang noch gestört.
Habe auch ein neues Attribut eingefügt "disableSetCmd" ist das auf "1" gesetzt wird die Zeile
IOWrite($hash,$amad_id,$uri,$header,$method);
nicht ausgeführt, sondern nur das Reading "lastSetCommand" befüllt.
Schau dir den Patch bitte mal an, ob das so Okay für dich ist.

Gruß Schlimbo

Hallo Schlimbo,

Sorry für die späte Meldung. Ich habe morgen vor Deine Änderungen ein zu bauen. Hast du auch schon ein fertiges Tasker Setup ähnlich des Flowsets? Würde das dann bereit stellen. Schön wäre auch eine Anleitung dazu.



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

Abercrombie1892

läuft das ganze denn bei jemanden auf einer nvidia shield android tv? ich bekomme es zwar installiert, aber ausser musik play/pause geht da leider garnix.

Schlimbo

Hallo Leon,
eine erste Beta Version ist fast fertig, erstelle die nächsten Tage mal einen neuen Thread dazu, damit das hier nicht zu offtopic wird. Hoffe es finden sich hier dann auch ein paar Tester ;)

Beim testen ist mit gerade noch aufgefallen, wenn ein Gerät an die CommBridge Readings schickt, die AMAD_ID aber nicht existiert, weil das AMAD_Device in FHEM gelöscht wurde, läuft mein Logfile mit unzähligen Meldungen voll.
Könntest du das noch irgendwie abfangen?
21:42:02.070 1: readingsUpdate(,bluetooth,on) missed to call readingsBeginUpdate first.
2017.12.07 21:42:02.071 1: stacktrace:
2017.12.07 21:42:02.071 1:     main::readingsBulkUpdate            called by fhem.pl (4410)
2017.12.07 21:42:02.071 1:     main::readingsBulkUpdateIfChanged   called by ./FHEM/74_AMADDevice.pm (396)
2017.12.07 21:42:02.072 1:     main::AMADDevice_WriteReadings      called by ./FHEM/74_AMADDevice.pm (754)
2017.12.07 21:42:02.072 1:     main::AMADDevice_Parse              called by fhem.pl (3714)
2017.12.07 21:42:02.073 1:     main::Dispatch                      called by ./FHEM/73_AMADCommBridge.pm (793)
2017.12.07 21:42:02.073 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.12.07 21:42:02.073 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.12.07 21:42:02.074 1:     main::AMADCommBridge_Read           called by fhem.pl (3499)
2017.12.07 21:42:02.074 1:     main::CallFn                        called by fhem.pl (701)
2017.12.07 21:42:02.075 1: readingsUpdate(,screenOrientation,landscape) missed to call readingsBeginUpdate first.
2017.12.07 21:42:02.075 1: stacktrace:
2017.12.07 21:42:02.076 1:     main::readingsBulkUpdate            called by fhem.pl (4410)
2017.12.07 21:42:02.076 1:     main::readingsBulkUpdateIfChanged   called by ./FHEM/74_AMADDevice.pm (396)
2017.12.07 21:42:02.076 1:     main::AMADDevice_WriteReadings      called by ./FHEM/74_AMADDevice.pm (754)
2017.12.07 21:42:02.077 1:     main::AMADDevice_Parse              called by fhem.pl (3714)
2017.12.07 21:42:02.077 1:     main::Dispatch                      called by ./FHEM/73_AMADCommBridge.pm (793)
2017.12.07 21:42:02.078 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.12.07 21:42:02.078 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.12.07 21:42:02.079 1:     main::AMADCommBridge_Read           called by fhem.pl (3499)
2017.12.07 21:42:02.079 1:     main::CallFn                        called by fhem.pl (701)
2017.12.07 21:42:02.080 1: readingsUpdate(,screen,off) missed to call readingsBeginUpdate first.
2017.12.07 21:42:02.080 1: stacktrace:
2017.12.07 21:42:02.080 1:     main::readingsBulkUpdate            called by fhem.pl (4410)
2017.12.07 21:42:02.081 1:     main::readingsBulkUpdateIfChanged   called by ./FHEM/74_AMADDevice.pm (396)
2017.12.07 21:42:02.081 1:     main::AMADDevice_WriteReadings      called by ./FHEM/74_AMADDevice.pm (754)
2017.12.07 21:42:02.081 1:     main::AMADDevice_Parse              called by fhem.pl (3714)
2017.12.07 21:42:02.082 1:     main::Dispatch                      called by ./FHEM/73_AMADCommBridge.pm (793)
2017.12.07 21:42:02.082 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.12.07 21:42:02.083 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.12.07 21:42:02.083 1:     main::AMADCommBridge_Read           called by fhem.pl (3499)
2017.12.07 21:42:02.083 1:     main::CallFn                        called by fhem.pl (701)
2017.12.07 21:42:02.084 1: readingsUpdate(,doNotDisturb,%interrupt) missed to call readingsBeginUpdate first.
2017.12.07 21:42:02.084 1: stacktrace:
2017.12.07 21:42:02.085 1:     main::readingsBulkUpdate            called by fhem.pl (4410)
2017.12.07 21:42:02.085 1:     main::readingsBulkUpdateIfChanged   called by ./FHEM/74_AMADDevice.pm (396)
2017.12.07 21:42:02.086 1:     main::AMADDevice_WriteReadings      called by ./FHEM/74_AMADDevice.pm (754)
2017.12.07 21:42:02.086 1:     main::AMADDevice_Parse              called by fhem.pl (3714)
2017.12.07 21:42:02.086 1:     main::Dispatch                      called by ./FHEM/73_AMADCommBridge.pm (793)
2017.12.07 21:42:02.087 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.12.07 21:42:02.087 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.12.07 21:42:02.088 1:     main::AMADCommBridge_Read           called by fhem.pl (3499)
2017.12.07 21:42:02.088 1:     main::CallFn                        called by fhem.pl (701)
2017.12.07 21:42:02.089 1: readingsUpdate(,flow_informations,aktiv) missed to call readingsBeginUpdate first.
2017.12.07 21:42:02.089 1: stacktrace:
2017.12.07 21:42:02.089 1:     main::readingsBulkUpdate            called by fhem.pl (4410)
2017.12.07 21:42:02.090 1:     main::readingsBulkUpdateIfChanged   called by ./FHEM/74_AMADDevice.pm (396)
2017.12.07 21:42:02.090 1:     main::AMADDevice_WriteReadings      called by ./FHEM/74_AMADDevice.pm (754)
2017.12.07 21:42:02.091 1:     main::AMADDevice_Parse              called by fhem.pl (3714)
2017.12.07 21:42:02.091 1:     main::Dispatch                      called by ./FHEM/73_AMADCommBridge.pm (793)
2017.12.07 21:42:02.091 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.12.07 21:42:02.092 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.12.07 21:42:02.092 1:     main::AMADCommBridge_Read           called by fhem.pl (3499)
2017.12.07 21:42:02.093 1:     main::CallFn                        called by fhem.pl (701)
2017.12.07 21:42:02.093 1: readingsUpdate(,screenOrientationMode,manual) missed to call readingsBeginUpdate first.
2017.12.07 21:42:02.094 1: stacktrace:
2017.12.07 21:42:02.094 1:     main::readingsBulkUpdate            called by fhem.pl (4410)
2017.12.07 21:42:02.095 1:     main::readingsBulkUpdateIfChanged   called by ./FHEM/74_AMADDevice.pm (396)
2017.12.07 21:42:02.095 1:     main::AMADDevice_WriteReadings      called by ./FHEM/74_AMADDevice.pm (754)
2017.12.07 21:42:02.095 1:     main::AMADDevice_Parse              called by fhem.pl (3714)
2017.12.07 21:42:02.096 1:     main::Dispatch                      called by ./FHEM/73_AMADCommBridge.pm (793)
2017.12.07 21:42:02.096 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.12.07 21:42:02.097 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.12.07 21:42:02.097 1:     main::AMADCommBridge_Read           called by fhem.pl (3499)
2017.12.07 21:42:02.097 1:     main::CallFn                        called by fhem.pl (701)
2017.12.07 21:42:02.098 1: readingsUpdate(,volumeNotification,7) missed to call readingsBeginUpdate first.
2017.12.07 21:42:02.098 1: stacktrace:
2017.12.07 21:42:02.099 1:     main::readingsBulkUpdate            called by fhem.pl (4410)
2017.12.07 21:42:02.099 1:     main::readingsBulkUpdateIfChanged   called by ./FHEM/74_AMADDevice.pm (396)
2017.12.07 21:42:02.100 1:     main::AMADDevice_WriteReadings      called by ./FHEM/74_AMADDevice.pm (754)
2017.12.07 21:42:02.100 1:     main::AMADDevice_Parse              called by fhem.pl (3714)
2017.12.07 21:42:02.100 1:     main::Dispatch                      called by ./FHEM/73_AMADCommBridge.pm (793)
2017.12.07 21:42:02.101 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.12.07 21:42:02.101 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.12.07 21:42:02.102 1:     main::AMADCommBridge_Read           called by fhem.pl (3499)
2017.12.07 21:42:02.102 1:     main::CallFn                        called by fhem.pl (701)
2017.12.07 21:42:02.103 1: readingsUpdate(,deviceState,online) missed to call readingsBeginUpdate first.
2017.12.07 21:42:02.103 1: stacktrace:
2017.12.07 21:42:02.103 1:     main::readingsBulkUpdate            called by fhem.pl (4410)
2017.12.07 21:42:02.104 1:     main::readingsBulkUpdateIfChanged   called by ./FHEM/74_AMADDevice.pm (411)
2017.12.07 21:42:02.104 1:     main::AMADDevice_WriteReadings      called by ./FHEM/74_AMADDevice.pm (754)
2017.12.07 21:42:02.105 1:     main::AMADDevice_Parse              called by fhem.pl (3714)
2017.12.07 21:42:02.105 1:     main::Dispatch                      called by ./FHEM/73_AMADCommBridge.pm (793)
2017.12.07 21:42:02.106 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.12.07 21:42:02.106 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.12.07 21:42:02.107 1:     main::AMADCommBridge_Read           called by fhem.pl (3499)
2017.12.07 21:42:02.107 1:     main::CallFn                        called by fhem.pl (701)
2017.12.07 21:42:02.108 1: readingsUpdate(,lastStatusRequestState,statusRequest_done) missed to call readingsBeginUpdate first.
2017.12.07 21:42:02.108 1: stacktrace:
2017.12.07 21:42:02.109 1:     main::readingsBulkUpdate            called by fhem.pl (4410)
2017.12.07 21:42:02.109 1:     main::readingsBulkUpdateIfChanged   called by ./FHEM/74_AMADDevice.pm (413)
2017.12.07 21:42:02.109 1:     main::AMADDevice_WriteReadings      called by ./FHEM/74_AMADDevice.pm (754)
2017.12.07 21:42:02.110 1:     main::AMADDevice_Parse              called by fhem.pl (3714)
2017.12.07 21:42:02.110 1:     main::Dispatch                      called by ./FHEM/73_AMADCommBridge.pm (793)
2017.12.07 21:42:02.110 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.12.07 21:42:02.111 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.12.07 21:42:02.111 1:     main::AMADCommBridge_Read           called by fhem.pl (3499)
2017.12.07 21:42:02.112 1:     main::CallFn                        called by fhem.pl (701)
2017.12.07 21:42:02.112 1: readingsUpdate(,mute,off) missed to call readingsBeginUpdate first.
2017.12.07 21:42:02.113 1: stacktrace:
2017.12.07 21:42:02.113 1:     main::readingsBulkUpdate            called by fhem.pl (4410)
2017.12.07 21:42:02.114 1:     main::readingsBulkUpdateIfChanged   called by ./FHEM/74_AMADDevice.pm (415)
2017.12.07 21:42:02.114 1:     main::AMADDevice_WriteReadings      called by ./FHEM/74_AMADDevice.pm (754)
2017.12.07 21:42:02.114 1:     main::AMADDevice_Parse              called by fhem.pl (3714)
2017.12.07 21:42:02.115 1:     main::Dispatch                      called by ./FHEM/73_AMADCommBridge.pm (793)
2017.12.07 21:42:02.115 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.12.07 21:42:02.116 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.12.07 21:42:02.116 1:     main::AMADCommBridge_Read           called by fhem.pl (3499)
2017.12.07 21:42:02.116 1:     main::CallFn                        called by fhem.pl (701)
2017.12.07 21:42:02.153 3: myAmadBridge: Unknown code {"amad": {"amad_id": "1512577528","fhemcmd": "setreading"},"payload": {"flowsetVersionAtDevice": "Tasker v0.1","deviceState": "online","airplanemode": "off","androidVersion": "7.0 Nougat","bluetooth": "on","currentMusicTrack": "no player active","doNotDisturb": "%interrupt","keyguardSet": "1","powerLevel": "100","screen": "off","screenBrightness": "102","screenOrientation": "landscape","screenOrientationMode": "manual","flow_SetCommands": "aktiv","flow_informations": "aktiv","volume": "15","volumeNotification": "7"}}, help me!
2017.12.07 21:44:01.920 1: ERROR: empty name in readingsBeginUpdate
2017.12.07 21:44:01.921 1: stacktrace:
2017.12.07 21:44:01.921 1:     main

CoolTux

Eigentlich sollte das Device automatisch angelegt werden wenn es noch nicht in FHEM existiert. Muss ich mir mal anschauen.
Kommt von Dir noch weitere Patches für das Device Modul oder musst nur noch am Tasker-Flowset was machen?


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

Schlimbo

Das automatische anlegen klappt auch, wenn es normal über den firstrun Befehl ausgeführt wird, denn nur hier wird über die "firstrundata" der Device Name Übertragungen.
Beim setzen von Readings wird nur die AMAD ID übertragen. Da die ID in der commBridge dann keinen Device zugeordnet werden kann, kommt es zu diesen Log Einträgen.
Zitat von: CoolTux am 08 Dezember 2017, 06:48:10
Eigentlich sollte das Device automatisch angelegt werden wenn es noch nicht in FHEM existiert.
Finde das automatische anlegen sollte weiterhin nur über die firstrun Daten angelegt werden. Nicht wenn Readings mit einer unbekannten ID ankommen, diese sollten einfach ignoriert werden.

Weitere Patches sind erst mal nicht nötig.
Das Tasker-Projekt ist soweit fertig, es gehen aber noch nicht alle set Kommandos und Readings (bis jetzt sind ca. 80% der Befehle und Readings integriert).
Erstelle für die Ersteinrichtung gerade noch eine Scene über deren Eingabemaske dann die Einstellungen vorgenommen werden können, Möglich ist es dann auch aus dem Tasker-Projekt eine APP zu generieren, die dann auch ohne Tasker funktioniert.

CoolTux

Ah da lag der Hase im Pfeffer. Ich merke Du hast Dich richtig gut eingefuchst. Ich weiß jetzt schon wer meine Maintainervertretung über nimmt  ;D

Ich werde eine weitere Prüfung dafür einbauen und noch mal expliziet nach dem Namen prüfen
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

Schlimbo

Zitat von: CoolTux am 08 Dezember 2017, 09:37:45
Ah da lag der Hase im Pfeffer. Ich merke Du hast Dich richtig gut eingefuchst. Ich weiß jetzt schon wer meine Maintainervertretung über nimmt  ;D
;D ;D ja, musste ja erst mal die kompletten Automagic Flows zerpflücken, damit ich heraus finden konnte wie die Sache funktioniert ;)

Hab noch einen Wunsch.:
Zitat von: Schlimbo am 25 November 2017, 11:30:22
Habe auch ein neues Attribut eingefügt "disableSetCmd" ist das auf "1" gesetzt wird die Zeile
IOWrite($hash,$amad_id,$uri,$header,$method);
nicht ausgeführt, sondern nur das Reading "lastSetCommand" befüllt.
Beim anlegen eines neuen AMADDevice über Tasker, weiß FHEM ja noch nicht, dass es ein Tasker Device ist und versucht erst mal über
IOWrite($hash,$amad_id,$uri,$header,$method);
Die set Kommandos zu schicken, was aber bei Tasker nicht ankommt.
Der User muss jetzt noch von Hand das Attribut disableSetCmd auf 1 setzen.
Fände es gut wenn dies automatisch gesetzt wird, wenn im Reading "flowsetVersionAtDevice" der Begriff "Tasker" gefunden wird.
Tasker setzt das Reading momentan auf "Tasker v0.1"

Gruß Schlimbo