From 222379d54e3defd3479d56996f77208e5e344b97 Mon Sep 17 00:00:00 2001
From: Marko Oldenburg
Date: Mon, 3 Jul 2017 18:37:22 +0200
Subject: [PATCH] fix Umlaute Problem bei voiceInput
---
73_AMADCommBridge.pm | 382 ++++++-------------------------------------
74_AMADDevice.pm | 4 +-
2 files changed, 50 insertions(+), 336 deletions(-)
diff --git a/73_AMADCommBridge.pm b/73_AMADCommBridge.pm
index b947e46..54ff1eb 100644
--- a/73_AMADCommBridge.pm
+++ b/73_AMADCommBridge.pm
@@ -65,10 +65,12 @@ use warnings;
use HttpUtils;
use TcpServerUtils;
+
+eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode ";
eval "use JSON;1" or $missingModul .= "JSON ";
-my $modulversion = "3.9.75";
+my $modulversion = "3.9.77";
my $flowsetversion = "3.9.76";
@@ -713,11 +715,9 @@ sub AMADCommBridge_ResponseProcessing($$) {
my $response;
my $c;
- my $decode_json;
-
- $decode_json = eval{decode_json($json)};
-
+
+ my $decode_json = eval{decode_json($json)};
if($@){
Log3 $bname, 4, "AMADCommBridge ($name) - ERROR while request: $@";
@@ -811,7 +811,7 @@ sub AMADCommBridge_ResponseProcessing($$) {
}
elsif ( $fhemcmd eq 'voiceinputvalue' ) {
- my $fhemCmd = lc($decode_json->{payload}{voiceinputdata});
+ my $fhemCmd = lc(encode_utf8($decode_json->{payload}{voiceinputdata}));
readingsBeginUpdate( $bhash);
readingsBulkUpdate( $bhash, "receiveVoiceCommand", $fhemCmd, 1 );
@@ -971,175 +971,7 @@ sub AMADCommBridge_ParseMsg($$) {
AMADCommBridge
-
- AMAD - Automagic Android Device
-
- This module integrates Android devices into FHEM and displays several settings using the Android app "Automagic".
- Automagic is comparable to the "Tasker" app for automating tasks and configuration settings. But Automagic is more user-friendly. The "Automagic Premium" app currently costs EUR 2.90.
-
- Any information retrievable by Automagic can be displayed in FHEM by this module. Just define your own Automagic-"flow" and send the data to the AMADCommBridge. One even can control several actions on Android devices.
-
- To be able to make use of all these functions the Automagic app and additional flows need to be installed on the Android device. The flows can be retrieved from the FHEM directory, the app can be bought in Google Play Store.
-
- How to use AMAD?
-
- - install the "Automagic Premium" app from the Google Play store.
- - install the flowset 74_AMADautomagicFlowset$VERSION.xml from the directory $INSTALLFHEM/FHEM/lib/ on your Android device and activate.
-
-
- Now you need to define a device in FHEM.
-
-
- Define
-
- define <name> AMAD <IP-ADDRESS>
-
- Example:
-
- define WandTabletWohnzimmer AMAD 192.168.0.23
-
-
- With this command two new AMAD devices in a room called AMAD are created. The parameter <IP-ADDRESS< defines the IP address of your Android device. The second device created is the AMADCommBridge which serves as a communication device from each Android device to FHEM.
- !!!Coming Soon!!! The communication port of each AMAD device may be set by the definition of the "port" attribute. One needs background knowledge of Automagic and HTTP requests as this port will be set in the HTTP request trigger of both flows, therefore the port also needs to be set there.
-
- The communication port of the AMADCommBridge device can easily be changed within the attribut "port".
-
-
- AMAD Communication Bridge
-
- Creating your first AMAD device automatically creates the AMADCommBridge device in the room AMAD. With the help of the AMADCommBridge any Android device communicates initially to FHEM.To make the IP addresse of the FHEM server known to the Android device, the FHEM server IP address needs to be configured in the AMADCommBridge. WITHOUT THIS STEP THE AMADCommBridge WILL NOT WORK PROPERLY.
- Please us the following command for configuration of the FHEM server IP address in the AMADCommBridge: set AMADCommBridge fhemServerIP <FHEM-IP>.
- Additionally the expertMode may be configured. By this setting a direct communication with FHEM will be established without the restriction of needing to make use of a notify to execute set commands.
-
-
- You are finished now! After 15 seconds latest the readings of your AMAD Android device should be updated. Consequently each 15 seconds a status request will be sent. If the state of your AMAD Android device does not change to "active" over a longer period of time one should take a look into the log file for error messages.
-
-
- Readings
-
- - airplanemode - on/off, state of the aeroplane mode
- - androidVersion - currently installed version of Android
- - automagicState - state of the Automagic App (prerequisite Android >4.3). In case you have Android >4.3 and the reading says "not supported", you need to enable Automagic inside Android / Settings / Sound & notification / Notification access
- - batteryHealth - the health of the battery (1=unknown, 2=good, 3=overheat, 4=dead, 5=over voltage, 6=unspecified failure, 7=cold)
- - batterytemperature - the temperature of the battery
- - bluetooth - on/off, bluetooth state
- - checkActiveTask - state of an app (needs to be defined beforehand). 0=not active or not active in foreground, 1=active in foreground, see note below
- - connectedBTdevices - list of all devices connected via bluetooth
- - connectedBTdevicesMAC - list of MAC addresses of all devices connected via bluetooth
- - currentMusicAlbum - currently playing album of mediaplayer
- - currentMusicApp - currently playing player app (Amazon Music, Google Play Music, Google Play Video, Spotify, YouTube, TuneIn Player, Aldi Life Music)
- - currentMusicArtist - currently playing artist of mediaplayer
- - currentMusicIcon - cover of currently play albumNoch nicht fertig implementiert
- - currentMusicState - state of currently/last used mediaplayer
- - currentMusicTrack - currently playing song title of mediaplayer
- - daydream - on/off, daydream currently active
- - deviceState - state of Android devices. unknown, online, offline.
- - doNotDisturb - state of do not Disturb Mode
- - dockingState - undocked/docked, Android device in docking station
- - flow_SetCommands - active/inactive, state of SetCommands flow
- - flow_informations - active/inactive, state of Informations flow
- - flowsetVersionAtDevice - currently installed version of the flowsets on the Android device
- - incomingCallerName - Callername from last Call
- - incomingCallerNumber - Callernumber from last Call
- - incommingWhatsAppMessageFrom - last WhatsApp message
- - incommingWhatsTelegramMessageFrom - last telegram message
- - intentRadioName - name of the most-recent streamed intent radio
- - intentRadioState - state of intent radio player
- - keyguardSet - 0/1 keyguard set, 0=no 1=yes, does not indicate whether it is currently active
- - lastSetCommandError - last error message of a set command
- - lastSetCommandState - last state of a set command, command send successful/command send unsuccessful
- - lastStatusRequestError - last error message of a statusRequest command
- - lastStatusRequestState - ast state of a statusRequest command, command send successful/command send unsuccessful
- - nextAlarmDay - currently set day of alarm
- - nextAlarmState - alert/done, current state of "Clock" stock-app
- - nextAlarmTime - currently set time of alarm
- - powerLevel - state of battery in %
- - powerPlugged - 0=no/1,2=yes, power supply connected
- - screen - on locked,unlocked/off locked,unlocked, state of display
- - screenBrightness - 0-255, level of screen-brightness
- - screenFullscreen - on/off, full screen mode
- - screenOrientation - Landscape/Portrait, screen orientation (horizontal,vertical)
- - screenOrientationMode - auto/manual, mode for screen orientation
- - state - current state of AMAD device
- - userFlowState - current state of a Flow, established under setUserFlowState Attribut
- - volume - media volume setting
- - volumeNotification - notification volume setting
-
- Prerequisite for using the reading checkActivTask the package name of the application to be checked needs to be defined in the attribute checkActiveTask. Example: attr Nexus10Wohnzimmer
- checkActiveTask com.android.chrome für den Chrome Browser.
-
-
-
-
- Set
-
- - activateVoiceInput - start voice input on Android device
- - bluetooth - on/off, switch bluetooth on/off
- - clearNotificationBar - All/Automagic, deletes all or only Automagic notifications in status bar
- - closeCall - hang up a running call
- - currentFlowsetUpdate - start flowset update on Android device
- - installFlowSource - install a Automagic flow on device, XML file must be stored in /tmp/ with extension xml. Example: set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml
- - doNotDisturb - sets the do not Disturb Mode, always Disturb, never Disturb, alarmClockOnly alarm Clock only, onlyImportant only important Disturbs
- - mediaAmazonMusic - play/stop/next/back , controlling the amazon music media player
- - mediaGoogleMusic - play/stop/next/back , controlling the google play music media player
- - mediaSpotifyMusic - play/stop/next/back , controlling the spotify media player
- - mediaTuneinRadio - play/stop/next/back , controlling the TuneinRadio media player
- - mediaAldiMusic - play/stop/next/back , controlling the Aldi music media player
- - mediaAudible - play/stop/next/back , controlling the Audible media player
- - mediaYouTube - play/stop/next/back , controlling the YouTube media player
- - mediaVlcPlayer - play/stop/next/back , controlling the VLC media player
- - nextAlarmTime - sets the alarm time. Only valid for the next 24 hours.
- - notifySndFile - plays a media-file which by default needs to be stored in the folder "/storage/emulated/0/Notifications/" of the Android device. You may use the attribute setNotifySndFilePath for defining a different folder.
- - openCall - initial a call and hang up after optional time / set DEVICE openCall 0176354 10 call this number and hang up after 10s
- - screenBrightness - 0-255, set screen brighness
- - screenMsg - display message on screen of Android device
- - sendintent - send intent string Example: set $AMADDEVICE sendIntent org.smblott.intentradio.PLAY url http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de/play.m3u name Klassikradio, first parameter contains the action, second parameter contains the extra. At most two extras can be used.
- - sendSMS - Sends an SMS to a specific phone number. Bsp.: sendSMS Dies ist ein Test|555487263
- - startDaydream - start Daydream
- - statusRequest - Get a new status report of Android device. Not all readings can be updated using a statusRequest as some readings are only updated if the value of the reading changes.
- - timer - set a countdown timer in the "Clock" stock app. Only seconds are allowed as parameter.
- - ttsMsg - send a message which will be played as voice message
- - userFlowState - set Flow/s active or inactive,set Nexus7Wohnzimmer Badezimmer:inactive vorheizen or set Nexus7Wohnzimmer Badezimmer vorheizen,Nachtlicht Steven:inactive
- - vibrate - vibrate Android device
- - volume - set media volume. Works on internal speaker or, if connected, bluetooth speaker or speaker connected via stereo jack
- - volumeNotification - set notifications volume
-
-
- Set (depending on attribute values)
-
- - changetoBtDevice - switch to another bluetooth device. Attribute setBluetoothDevice needs to be set. See note below!
- - openApp - start an app. attribute setOpenApp
- - openURL - opens a URLS in the standard browser as long as no other browser is set by the attribute setOpenUrlBrowser.Example: attr Tablet setOpenUrlBrowser de.ozerov.fully|de.ozerov.fully.MainActivity, first parameter: package name, second parameter: Class Name
- - screen - on/off/lock/unlock, switch screen on/off or lock/unlock screen. In Automagic "Preferences" the "Device admin functions" need to be enabled, otherwise "Screen off" does not work. attribute setScreenOnForTimer changes the time the display remains switched on!
- - screenFullscreen - on/off, activates/deactivates full screen mode. attribute setFullscreen
- - screenLock - Locks screen with request for PIN. attribute setScreenlockPIN - enter PIN here. Only use numbers, 4-16 numbers required.
- - screenOrientation - Auto,Landscape,Portait, set screen orientation (automatic, horizontal, vertical). attribute setScreenOrientation
- - system - issue system command (only with rooted Android devices). reboot,shutdown,airplanemodeON (can only be switched ON) attribute root, in Automagic "Preferences" "Root functions" need to be enabled.
- - setAPSSID - set WLAN AccesPoint SSID to prevent WLAN sleeps
- - setNotifySndFilePath - set systempath to notifyfile (default /storage/emulated/0/Notifications/
- - setTtsMsgSpeed - set speaking speed for TTS (Value between 0.5 - 4.0, 0.5 Step) default is 1.0
- - setTtsMsgLang - set speaking language for TTS, de or en (default is de)
-
- To be able to use "openApp" the corresponding attribute "setOpenApp" needs to contain the app package name.
-
- To be able to switch between bluetooth devices the attribute "setBluetoothDevice" needs to contain (a list of) bluetooth devices defined as follows: attr <DEVICE> BTdeviceName1|MAC,BTDeviceName2|MAC No spaces are allowed in any BTdeviceName. Defining MAC please make sure to use the character : (colon) after each second digit/character.
- Example: attr Nexus10Wohnzimmer setBluetoothDevice Logitech_BT_Adapter|AB:12:CD:34:EF:32,Anker_A3565|GH:56:IJ:78:KL:76
-
-
-
- state
-
- - initialized - shown after initial define.
- - active - device is active.
- - disabled - device is disabled by the attribute "disable".
-
-
- Further examples and reading:
-
-
-
+comming soon
=end html
=begin html_DE
@@ -1147,177 +979,59 @@ sub AMADCommBridge_ParseMsg($$) {
AMADCommBridge
- AMAD - Automagic Android Device
-
- Dieses Modul liefert, in Verbindung mit der Android APP Automagic, diverse Informationen von Android Geräten.
- Die AndroidAPP Automagic (welche nicht von mir stammt und 2.90 Euro kostet) funktioniert wie Tasker, ist aber bei weitem User freundlicher.
-
- Mit etwas Einarbeitung können jegliche Informationen welche Automagic bereit stellt in FHEM angezeigt werden. Hierzu bedarf es lediglich eines eigenen Flows welcher seine Daten an die AMADCommBridge sendet. Das Modul gibt auch die Möglichkeit Androidgeräte zu steuern.
-
- Für all diese Aktionen und Informationen wird auf dem Androidgerät "Automagic" und ein so genannter Flow benötigt. Die App ist über den Google PlayStore zu beziehen. Das benötigte Flowset bekommt man aus dem FHEM Verzeichnis.
+ AMAD - Automagic Android Device
+ AMADCommBridge - Kommunikationsbrücke für alle AMAD Geräte
+
+ Dieses Modul ist das Ausgangsmodul zur erfolgreichen Integration von Androidgeräten in FHEM. Es stellt ferner eine Verbindungsebene zwischen AMAD unterstützten Geräten und FHEM zur Verfügung. Alle Kommunikation zwischen AMAD Android und FHEM läuft über diese Schnittstelle.
+ Daher erfolgt die Ersteinrichtung eines AMAD Devices auch genau über diese Modulinstanz.
+
+ Damit erfolgreich ein Androidgerät in FHEM eingerichtet werden kann, muss im ersten Schritt ein AMADCommBridge Device angelegt werden.
- Wie genau verwendet man nun AMAD?
-
- - man installiert die App "Automagic Premium" aus dem PlayStore.
- - dann installiert man das Flowset 74_AMADautomagicFlowset$VERSION.xml aus dem Ordner $INSTALLFHEM/FHEM/lib/ auf dem Androidgerät und aktiviert die Flows.
-
-
- Es muß noch ein Device in FHEM anlegt werden.
-
-
+
Define
- define <name> AMAD <IP-ADRESSE>
+ define <name> AMADCommBridge
Beispiel:
- define WandTabletWohnzimmer AMAD 192.168.0.23
+ define AMADBridge AMADCommBridge
- Diese Anweisung erstellt zwei neues AMAD-Device im Raum AMAD.Der Parameter <IP-ADRESSE> legt die IP Adresse des Android Gerätes fest.
- Das zweite Device ist die AMADCommBridge welche als Kommunikationsbrücke vom Androidgerät zu FHEM diehnt. !!!Comming Soon!!! Wer den Port ändern möchte, kann dies über das Attribut "port" tun. Ihr solltet aber wissen was Ihr tut, da dieser Port im HTTP Request Trigger der beiden Flows eingestellt ist. Demzufolge muß der Port dort auch geändert werden. Der Port für die Bridge kann ohne Probleme im Bridge Device mittels dem Attribut "port" verändert werden.
-
- Der Port für die Bridge kann ohne Probleme im Bridge Device mittels dem Attribut "port" verändert werden.
+ Diese Anweisung erstellt ein neues AMADCommBridge Device Namens AMADBridge.
+
+ Im folgenden muß lediglich das Flowset auf dem Android Gerät installiert werden und der Flow 'First Run Assistant' ausgeführt werden. (einfach den Homebutton drücken)
+ Der Assistant geleitet Dich dann durch die Einrichtung Deines AMAD Gerätes und sorgt dafür das am Ende des Installationsprozess das Androidgerät als AMAD Device in FHEM angelegt wird.
-
- AMAD Communication Bridge
-
- Beim ersten anlegen einer AMAD Deviceinstanz wird automatisch ein Gerät Namens AMADCommBridge im Raum AMAD mit angelegt. Dieses Gerät diehnt zur Kommunikation vom Androidgerät zu FHEM ohne das zuvor eine Anfrage von FHEM aus ging. Damit das Androidgerät die IP von FHEM kennt, muss diese sofort nach dem anlegen der Bridge über den set Befehl in ein entsprechendes Reading in die Bridge geschrieben werden. DAS IST SUPER WICHTIG UND FÜR DIE FUNKTION DER BRIDGE NOTWENDIG.
- Hierfür muß folgender Befehl ausgeführt werden. set AMADCommBridge fhemServerIP <FHEM-IP>.
- Als zweites Reading kann expertMode gesetzen werden. Mit diesem Reading wird eine unmittelbare Komminikation mit FHEM erreicht ohne die Einschränkung über ein
- Notify gehen zu müssen und nur reine set Befehle ausführen zu können.
-
- NUN bitte die Flows AKTIVIEREN!!!
-
- Fertig! Nach anlegen der Geräteinstanz und dem eintragen der fhemServerIP in der CommBridge sollten nach spätestens 15 Sekunden bereits die ersten Readings reinkommen. Nun wird alle 15 Sekunden probiert einen Status Request erfolgreich ab zu schließen. Wenn der Status sich über einen längeren Zeitraum nicht auf "active" ändert, sollte man im Log nach eventuellen Fehlern suchen.
-
-
+
+
Readings
-
- - airplanemode - Status des Flugmodus
- - androidVersion - aktuell installierte Androidversion
- - automagicState - Statusmeldungen von der AutomagicApp (Voraussetzung Android >4.3). Ist Android größer 4.3 vorhanden und im Reading steht "wird nicht unterstützt", muß in den Androideinstellungen unter Ton und Benachrichtigungen -> Benachrichtigungszugriff ein Haken für Automagic gesetzt werden
- - batteryHealth - Zustand der Battery (1=unbekannt, 2=gut, 3=Überhitzt, 4=tot, 5=Überspannung, 6=unbekannter Fehler, 7=kalt)
- - batterytemperature - Temperatur der Batterie
- - bluetooth - on/off, Bluetooth Status an oder aus
- - checkActiveTask - Zustand einer zuvor definierten APP. 0=nicht aktiv oder nicht aktiv im Vordergrund, 1=aktiv im Vordergrund, siehe Hinweis unten
- - connectedBTdevices - eine Liste der verbundenen Gerät
- - connectedBTdevicesMAC - eine Liste der MAC Adressen aller verbundender BT Geräte
- - currentMusicAlbum - aktuell abgespieltes Musikalbum des verwendeten Mediaplayers
- - currentMusicApp - aktuell verwendeter Mediaplayer (Amazon Music, Google Play Music, Google Play Video, Spotify, YouTube, TuneIn Player, Aldi Life Music)
- - currentMusicArtist - aktuell abgespielter Musikinterpret des verwendeten Mediaplayers
- - currentMusicIcon - Cover vom aktuell abgespielten Album Noch nicht fertig implementiert
- - currentMusicState - Status des aktuellen/zuletzt verwendeten Mediaplayers
- - currentMusicTrack - aktuell abgespielter Musiktitel des verwendeten Mediaplayers
- - daydream - on/off, Daydream gestartet oder nicht
- - deviceState - Status des Androidgerätes. unknown, online, offline.
- - doNotDisturb - aktueller Status des nicht stören Modus
- - dockingState - undocked/docked Status ob sich das Gerät in einer Dockinstation befindet.
- - flow_SetCommands - active/inactive, Status des SetCommands Flow
- - flow_informations - active/inactive, Status des Informations Flow
- - flowsetVersionAtDevice - aktuell installierte Flowsetversion auf dem Device
- - incomingCallerName - Anrufername des eingehenden Anrufes
- - incomingCallerNumber - Anrufernummer des eingehenden Anrufes
- - incommingWhatsAppMessageFrom - letzte WhatsApp Nachricht
- - incommingWhatsTelegramMessageFrom - letzte Telegram Nachricht
- - intentRadioName - zuletzt gesrreamter Intent Radio Name
- - intentRadioState - Status des IntentRadio Players
- - keyguardSet - 0/1 Displaysperre gesetzt 0=nein 1=ja, bedeutet nicht das sie gerade aktiv ist
- - lastSetCommandError - letzte Fehlermeldung vom set Befehl
- - lastSetCommandState - letzter Status vom set Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
- - lastStatusRequestError - letzte Fehlermeldung vom statusRequest Befehl
- - lastStatusRequestState - letzter Status vom statusRequest Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
- - nextAlarmDay - aktiver Alarmtag
- - nextAlarmState - aktueller Status des "Androidinternen" Weckers
- - nextAlarmTime - aktive Alarmzeit
- - powerLevel - Status der Batterie in %
- - powerPlugged - Netzteil angeschlossen? 0=NEIN, 1|2=JA
- - screen - on locked/unlocked, off locked/unlocked gibt an ob der Bildschirm an oder aus ist und gleichzeitig gesperrt oder nicht gesperrt
- - screenBrightness - Bildschirmhelligkeit von 0-255
- - screenFullscreen - on/off, Vollbildmodus (An,Aus)
- - screenOrientation - Landscape,Portrait, Bildschirmausrichtung (Horizontal,Vertikal)
- - screenOrientationMode - auto/manual, Modus für die Ausrichtung (Automatisch, Manuell)
- - state - aktueller Status
- - userFlowState - aktueller Status eines Flows, festgelegt unter dem setUserFlowState Attribut
- - volume - Media Lautstärkewert
- - volumeNotification - Benachrichtigungs Lautstärke
-
- Beim Reading checkActivTask muß zuvor der Packagename der zu prüfenden App als Attribut checkActiveTask angegeben werden. Beispiel: attr Nexus10Wohnzimmer
- checkActiveTask com.android.chrome für den Chrome Browser.
-
-
-
-
- Set
-
- - activateVoiceInput - aktiviert die Spracheingabe
- - bluetooth - on/off, aktiviert/deaktiviert Bluetooth
- - clearNotificationBar - All,Automagic, löscht alle Meldungen oder nur die Automagic Meldungen in der Statusleiste
- - closeCall - beendet einen laufenden Anruf
- - currentFlowsetUpdate - fürt ein Flowsetupdate auf dem Device durch
- - doNotDisturb - schaltet den nicht stören Modus, always immer stören, never niemals stören, alarmClockOnly nur Wecker darf stören, onlyImportant nur wichtige Störungen
- - installFlowSource - installiert einen Flow auf dem Device, das XML File muss unter /tmp/ liegen und die Endung xml haben. Bsp: set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml
- - mediaAmazonMusic - play, stop, next, back ,steuert den Amazon Musik Mediaplayer
- - mediaGoogleMusic - play, stop, next, back ,steuert den Google Play Musik Mediaplayer
- - mediaSpotifyMusic - play, stop, next, back ,steuert den Spotify Mediaplayer
- - mediaTuneinRadio - play, stop, next, back ,steuert den TuneIn Radio Mediaplayer
- - mediaAldiMusic - play, stop, next, back ,steuert den Aldi Musik Mediaplayer
- - mediaAudible - play, stop, next, back ,steuert den Audible Mediaplayer
- - mediaYouTube - play, stop, next, back ,steuert den YouTube Mediaplayer
- - mediaVlcPlayer - play, stop, next, back ,steuert den VLC Mediaplayer
- - nextAlarmTime - setzt die Alarmzeit. gilt aber nur innerhalb der nächsten 24Std.
- - openCall - ruft eine Nummer an und legt optional nach X Sekunden auf / set DEVICE openCall 01736458 10 / ruft die Nummer an und beendet den Anruf nach 10s
- - screenBrightness - setzt die Bildschirmhelligkeit, von 0-255.
- - screenMsg - versendet eine Bildschirmnachricht
- - sendintent - sendet einen Intentstring Bsp: set $AMADDEVICE sendIntent org.smblott.intentradio.PLAY url http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de/play.m3u name Klassikradio, der erste Befehl ist die Aktion und der zweite das Extra. Es können immer zwei Extras mitgegeben werden.
- - sendSMS - sendet eine SMS an eine bestimmte Telefonnummer. Bsp.: sendSMS Dies ist ein Test|555487263
- - startDaydream - startet den Daydream
- - statusRequest - Fordert einen neuen Statusreport beim Device an. Es können nicht von allen Readings per statusRequest die Daten geholt werden. Einige wenige geben nur bei Statusänderung ihren Status wieder.
- - timer - setzt einen Timer innerhalb der als Standard definierten ClockAPP auf dem Device. Es können nur Sekunden angegeben werden.
- - ttsMsg - versendet eine Nachricht welche als Sprachnachricht ausgegeben wird
- - userFlowState - aktiviert oder deaktiviert einen oder mehrere Flows,set Nexus7Wohnzimmer Badezimmer vorheizen:inactive oder set Nexus7Wohnzimmer Badezimmer vorheizen,Nachtlicht Steven:inactive
- - vibrate - lässt das Androidgerät vibrieren
- - volume - setzt die Medialautstärke. Entweder die internen Lautsprecher oder sofern angeschlossen die Bluetoothlautsprecher und per Klinkenstecker angeschlossene Lautsprecher, + oder - vor dem Wert reduziert die aktuelle Lautstärke um den Wert
- - volumeNotification - setzt die Benachrichtigungslautstärke.
-
-
- Set abhängig von gesetzten Attributen
-
- - changetoBtDevice - wechselt zu einem anderen Bluetooth Gerät. Attribut setBluetoothDevice muß gesetzt sein. Siehe Hinweis unten!
- - notifySndFile - spielt die angegebene Mediadatei auf dem Androidgerät ab. Die aufzurufende Mediadatei sollte sich im Ordner /storage/emulated/0/Notifications/ befinden. Ist dies nicht der Fall kann man über das Attribut setNotifySndFilePath einen Pfad vorgeben.
- - openApp - öffnet eine ausgewählte App. Attribut setOpenApp
- - openURL - öffnet eine URL im Standardbrowser, sofern kein anderer Browser über das Attribut setOpenUrlBrowser ausgewählt wurde. Bsp: attr Tablet setOpenUrlBrowser de.ozerov.fully|de.ozerov.fully.MainActivity, das erste ist der Package Name und das zweite der Class Name
- - setAPSSID - setzt die AccessPoint SSID um ein WLAN sleep zu verhindern
- - screen - on/off/lock/unlock schaltet den Bildschirm ein/aus oder sperrt/entsperrt ihn, in den Automagic Einstellungen muss "Admin Funktion" gesetzt werden sonst funktioniert "Screen off" nicht. Attribut setScreenOnForTimer ändert die Zeit wie lange das Display an bleiben soll!
- - screenFullscreen - on/off, (aktiviert/deaktiviert) den Vollbildmodus. Attribut setFullscreen
- - screenLock - Sperrt den Bildschirm mit Pinabfrage. Attribut setScreenlockPIN - hier die Pin dafür eingeben. Erlaubt sind nur Zahlen. Es müßen mindestens 4, bis max 16 Zeichen verwendet werden.
- - screenOrientation - Auto,Landscape,Portait, aktiviert die Bildschirmausrichtung (Automatisch,Horizontal,Vertikal). Attribut setScreenOrientation
- - system - setzt Systembefehle ab (nur bei gerootetet Geräen). reboot,shutdown,airplanemodeON (kann nur aktiviert werden) Attribut root, in den Automagic Einstellungen muss "Root Funktion" gesetzt werden
- - setNotifySndFilePath - setzt den korrekten Systempfad zur Notifydatei (default ist /storage/emulated/0/Notifications/
- - setTtsMsgSpeed - setzt die Sprachgeschwindigkeit bei der Sprachausgabe(Werte zwischen 0.5 bis 4.0 in 0.5er Schritten) default ist 1.0
- - setTtsMsgSpeed - setzt die Sprache bei der Sprachausgabe, de oder en (default ist de)
-
- Um openApp verwenden zu können, muss als Attribut der Package Name der App angegeben werden.
-
- Um zwischen Bluetoothgeräten wechseln zu können, muß das Attribut setBluetoothDevice mit folgender Syntax gesetzt werden. attr <DEVICE> BTdeviceName1|MAC,BTDeviceName2|MAC Es muss
- zwingend darauf geachtet werden das beim BTdeviceName kein Leerzeichen vorhanden ist. Am besten zusammen oder mit Unterstrich. Achtet bei der MAC darauf das Ihr wirklich nach jeder zweiten Zahl auch
- einen : drin habt
- Beispiel: attr Nexus10Wohnzimmer setBluetoothDevice Logitech_BT_Adapter|AB:12:CD:34:EF:32,Anker_A3565|GH:56:IJ:78:KL:76
-
-
-
- state
-
- - initialized - Ist der Status kurz nach einem define.
- - active - die Geräteinstanz ist im aktiven Status.
- - disabled - die Geräteinstanz wurde über das Attribut disable deaktiviert
-
-
- Anwendungsbeispiele:
- Hier verweise ich auf den gut gepflegten Wikieintrag
+ - JSON_ERROR - JSON Fehlermeldung welche von Perl gemeldet wird
+ - JSON_ERROR_STRING - der String welcher die JSON Fehlermeldung verursacht hat
+ - fhemServerIP - die Ip-Adresse des FHEM Servers, wird vom Modul auf Basis des JSON Strings vom Installationsassistenten gesetzt. Kann aber auch mittels set Befehles vom User gesetzt werden
+ - receiveFhemCommand - ist das Attribut fhemControlMode auf trigger gestellt, wird das Reading gesetzt sobald ein FHEM Befehl übersendet wird. Hierauf kann dann ein Notify triggern.
+ Wird anstelle von trigger setControl als Wert für fhemControlMode eingestellt, wird das Reading nicht gestzt sondern der set Behel sofort ausgeführt.
+ - receiveVoiceCommand - wird die Sprachsteuerung von AMAD aktiviert (set DEVICE activateVoiceInput) so wird der letzte erkannten Sprachbefehle in dieses Reading geschrieben.
+ - receiveVoiceDevice - Name des Devices von wo aus der letzte erkannte Sprachbefehl gesendet wurde
+ - state - Status der Bridge, open, closed
-
+
+
+ Attribute
+
+ - allowFrom - Regexp der erlaubten IP-Adressen oder Hostnamen. Wenn dieses Attribut gesetzt wurde, werden ausschließlich Verbindungen von diesen Adressen akzeptiert.
+ Achtung: falls allowfrom nicht gesetzt ist, und keine gütige allowed Instanz definiert ist, und die Gegenstelle eine nicht lokale Adresse hat, dann wird die Verbindung abgewiesen. Folgende Adressen werden als local betrachtet:
+ IPV4: 127/8, 10/8, 192.168/16, 172.16/10, 169.254/16
+ IPV6: ::1, fe80/10
+ - debugJSON - wenn auf 1 gesetzt, werden JSON Fehlermeldungen in Readings geschrieben. Siehe hierzu JSON_ERROR* unter Readings
+ - fhemControlMode - steuert die zulässige Art der Kontrolle von FHEM Devices. Du kannst über die Bridge auf 2 Arten FHEM Devices steuern. Entweder per direktem FHEM Befehl aus einem Flow heraus, oder als Sprachbefehl mittels Sprachsteuerung (set DEVICE activateVoiceInput)
+
- trigger - ist der Wert trigger gesetzt, werden alle an die Bridge gesendeten FHEM set Befehle in das Reading receiveFhemCommand geschrieben und können so mittels notify ausgeführt werden. Sprachsteuerung ist möglich, es werden Readings receiveVoice* gesetzt. Auf dem Androidgerät können bei Sprachsteuerung mehrere Sprachbefehle mittels "und" verknüpft/aneinander gereiht werden. Bsp: schalte die Lichtszene Abends an und schalte den Fernsehr an
+ - setControl - alle set Befehle welche mittels eines Flows über die Bridge gesendet werden, werden automatisch ausgeführt. Das triggern eines Readings ist nicht nötig. Die Steuerung mittels Sprache verhält sich wie beim Wert trigger
+ - thirdPartControl - verhält sich wie trigger, bei der Sprachsteuerung ist jedoch ein anreihen von Sprachbefehlen mittels "und" nicht möglich. Dient der Sprachsteuerung über Module anderer Modulautoren ((z.B. 39_TEERKO.pm)
+
+
+
+ Wie man bei Problemen mit dem Assistenten ein Androidgerät auch von Hand anlegen kann, erfärst Du in der Commandref zum AMADDevice Modul.
=end html_DE
diff --git a/74_AMADDevice.pm b/74_AMADDevice.pm
index bb27e43..7c44f89 100644
--- a/74_AMADDevice.pm
+++ b/74_AMADDevice.pm
@@ -54,7 +54,7 @@ eval "use Encode qw(encode encode_utf8);1" or $missingModul .= "Encode ";
eval "use JSON;1" or $missingModul .= "JSON ";
-my $modulversion = "3.9.73";
+my $modulversion = "3.9.76";
my $flowsetversion = "3.9.76";
@@ -762,7 +762,7 @@ sub AMADDevice_Parse($$) {
my $name = $io_hash->{NAME};
- my $decode_json = eval{decode_json(encode_utf8($json))};
+ my $decode_json = eval{decode_json(encode_utf8($json))};
if($@){
Log3 $name, 3, "AMADDevice ($name) - error while request: $@";
#readingsSingleUpdate($hash, "state", "error", 1);