From 2fd9f3e719dc8861fcca887a1547fa31725a88d5 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Mon, 10 Aug 2015 14:17:39 +0200 Subject: [PATCH 01/10] Flows aus dem Develbranch genommen --- [AMAD]_Flows_Handy | 555 -------------------------------------------- [AMAD]_Flows_Tablet | 555 -------------------------------------------- 2 files changed, 1110 deletions(-) delete mode 100644 [AMAD]_Flows_Handy delete mode 100644 [AMAD]_Flows_Tablet diff --git a/[AMAD]_Flows_Handy b/[AMAD]_Flows_Handy deleted file mode 100644 index 3f2455f..0000000 --- a/[AMAD]_Flows_Handy +++ /dev/null @@ -1,555 +0,0 @@ - - - - false - com.android.music.metachanged - true - com.android.music.metachanged - - - - - - - - artist = getString("artist"); -track = getString("track"); -album = getString("album"); - false - - - true - HTTP Request: /automagic/deviceInfo, Port 8089 - true - /automagic/deviceInfo - 8089 - true - - - true - HTTP Request: /automagic/mediaPlayer, Port 8089 - true - /automagic/mediaPlayer - 8089 - true - - - true - HTTP Request: /automagic/openURL, Port 8089 - true - /automagic/openURL - 8089 - true - - - true - HTTP Request: /automagic/screenMsg, Port 8089 - true - /automagic/screenMsg - 8089 - true - - - true - HTTP Request: /automagic/setBrightness, Port 8089 - true - /automagic/setBrightness - 8089 - true - - - true - HTTP Request: /automagic/setScreenOnOff, Port 8089 - true - /automagic/setScreenOnOff - 8089 - true - - - true - HTTP Request: /automagic/setVolume, Port 8089 - true - /automagic/setVolume - 8089 - true - - - true - HTTP Request: /automagic/ttsMsg, Port 8089 - true - /automagic/ttsMsg - 8089 - true - - - true - Akku Ladestand: grösser als 0% - 0 - HIGHER_THAN - - - true - Expression: param_button == "back" - param_button == "back" - - - true - Expression: param_button == "next" - param_button == "next" - - - true - Expression: param_button == "play" - param_button == "play" - - - true - Expression: param_button == "stop" - param_button == "stop" - - - true - Expression: param_screen=="off" - param_screen=="off" - - - true - Expression: param_screen=="on" - param_screen=="on" - - - true - Expression: trigger == "com.android.music.metachanged" - trigger == "com.android.music.metachanged" - - - true - Audio Player steuern: Medienknopf Play (Google Play Musik) - true - LAUNCH - KEYCODE_MEDIA_PLAY - true - com.google.android.music - com.google.android.music.playback.MediaButtonIntentReceiver - Google Play Musik - - - true - Audio Player steuern: Medienknopf Stopp (Google Play Musik) - true - LAUNCH - KEYCODE_MEDIA_STOP - true - com.google.android.music - com.google.android.music.playback.MediaButtonIntentReceiver - Google Play Musik - - - true - Audio Player steuern: Medienknopf Weiter (Google Play Musik) - true - LAUNCH - KEYCODE_MEDIA_NEXT - true - com.google.android.music - com.google.android.music.playback.MediaButtonIntentReceiver - Google Play Musik - - - true - Audio Player steuern: Medienknopf Zurück (Google Play Musik) - true - LAUNCH - KEYCODE_MEDIA_PREVIOUS - true - com.google.android.music - com.google.android.music.playback.MediaButtonIntentReceiver - Google Play Musik - - - true - Benachrichtigung auf Bildschirm: {param_message} (lange) - true - {param_message} - - 200 - 250 - false - 1.0 - true - false - TOP_LEFT - 0 - 0 - - - true - Gerät sperren - - - true - HTTP Request: GET http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicAlbum%20{encodeURLForm(album)} speichern in response - http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicAlbum%20{encodeURLForm(album)} - true - false - - GET - X_WWW_FORM_URLENCODED - text/plain - - Lastname=XYZ,Firstname=ABC - 60000 - false - - true - response - /storage/emulated/0/Download/file.bin - - - true - HTTP Request: GET http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicArtist%20{encodeURLForm(artist)} speichern in response - http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicArtist%20{encodeURLForm(artist)} - true - false - - GET - X_WWW_FORM_URLENCODED - text/plain - - Lastname=XYZ,Firstname=ABC - 60000 - false - - true - response - /storage/emulated/0/Download/file.bin - - - true - HTTP Request: GET http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicTrack%20{encodeURLForm(track)} speichern in response - http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicTrack%20{encodeURLForm(track)} - true - false - - GET - X_WWW_FORM_URLENCODED - text/plain - - Lastname=XYZ,Firstname=ABC - 60000 - false - - true - response - /storage/emulated/0/Download/file.bin - - - false - HTTP Response - powerLevel {battery_percentage}@@powerPlugged {battery_plugged}@@volumeMusikSpeaker {volumeMusikSpeaker}@@networkCountryIso {network_country_iso}@@voiceMailNumber {voice_mail_number}@@screenBrightness {screenBrightness}@@nextAlarmDay {next_alarmday}@@nextAlarmTime {next_alarmtime} - true - text/html - - - true - Initialisiere Variable Nächster Alarm: Variable next_alarm - next_alarm - - - true - Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness - SYSTEM - screen_brightness - screenBrightness - - - true - Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker - SYSTEM - volume_music_speaker - volumeMusikSpeaker - - - true - Initialisiere Variablen Telefoninfo: network_country_iso, voice_mail_number - true - network_country_iso - true - voice_mail_number - - - true - Lautstärke einstellen: Medien auf Level 10 - MUSIC - 10 - true - false - - - false - Lautstärken setzen - false - global_volume_alarm - false - global_volume_dtmf - true - param_volume - false - global_volume_notification - false - global_volume_ring - false - global_volume_system - false - global_volume_voice_call - false - global_ringer_mode - false - global_interruptions_mode - - - true - Lautstärken Speichern - true - global_volume_alarm - true - global_volume_dtmf - true - global_volume_music - true - global_volume_notification - true - global_volume_ring - true - global_volume_system - true - global_volume_voice_call - false - global_ringer_mode - false - global_interruptions_mode - - - true - Lautstärken Wiederherstellen - true - global_volume_alarm - true - global_volume_dtmf - true - global_volume_music - true - global_volume_notification - true - global_volume_ring - true - global_volume_system - true - global_volume_voice_call - false - global_ringer_mode - false - global_interruptions_mode - - - true - Pause: 2s (Gerät wach halten) - 2s - true - - - true - Schalte Display ein: Hell für 60s - true - 60s - true - - - true - Script: next_alarmday = "{next_alarm,dateformat,c}" - - - - true - Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" - - - - true - Setze Systemeinstellung: System screen_brightness auf {param_brightness} - SYSTEM - screen_brightness - {param_brightness} - true - - - true - Sprachausgabe: {param_message} - MUSIC - {param_message} - de_DE - true - 1.0 - true - 1.0 - false - false - false - false - TRANSIENT - - - true - URL in Browser öffnen: {param_url} (mit Chrome) - {param_url} - true - com.android.chrome - com.google.android.apps.chrome.Main - Chrome - - - Displaymessage - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /automagic/screenMsg, Port 8089 - - Benachrichtigung auf Bildschirm: {param_message} (lange) - - - - Informationen - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - Initialisiere Variablen Telefoninfo: network_country_iso, voice_mail_number - Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker - Akku Ladestand: grösser als 0% - Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness - - HTTP Request: /automagic/deviceInfo, Port 8089 - - Pause: 2s (Gerät wach halten) - Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" - Initialisiere Variable Nächster Alarm: Variable next_alarm - HTTP Response - Script: next_alarmday = "{next_alarm,dateformat,c}" - - - - - - - - - - - - - - - - Mediaplayer - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - Audio Player steuern: Medienknopf Zurück (Google Play Musik) - Audio Player steuern: Medienknopf Weiter (Google Play Musik) - Audio Player steuern: Medienknopf Stopp (Google Play Musik) - Audio Player steuern: Medienknopf Play (Google Play Musik) - Expression: param_button == "next" - Expression: param_button == "back" - Expression: param_button == "stop" - Expression: param_button == "play" - WLAN Verbunden: TuxNet-AP01 - Expression: trigger == "com.android.music.metachanged" - - HTTP Request: /automagic/mediaPlayer, Port 8089 - com.android.music.metachanged - - HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus5Marko%20currentPlayMusicTrack%20{encodeURLForm(track)} speichern in response - HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus5Marko%20currentPlayMusicAlbum%20{encodeURLForm(album)} speichern in response - HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus5Marko%20currentPlayMusicArtist%20{encodeURLForm(artist)} speichern in response - - - - - - - - - - - - - - - - openURL - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /automagic/openURL, Port 8089 - - URL in Browser öffnen: {param_url} (mit Chrome) - - - - Set Brightness - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - Setze Systemeinstellung: System screen_brightness auf {param_brightness} - - HTTP Request: /automagic/setBrightness, Port 8089 - - - - - Set Screen On Off - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - Gerät sperren - Schalte Display ein: Hell für 60s - - HTTP Request: /automagic/setScreenOnOff, Port 8089 - - Expression: param_screen=="off" - Expression: param_screen=="on" - - - - - - - Text to Speech - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /automagic/ttsMsg, Port 8089 - - Lautstärken Speichern - Sprachausgabe: {param_message} - Lautstärken Wiederherstellen - Lautstärke einstellen: Medien auf Level 10 - - - - - - - Volume - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /automagic/setVolume, Port 8089 - - Lautstärken setzen - - - \ No newline at end of file diff --git a/[AMAD]_Flows_Tablet b/[AMAD]_Flows_Tablet deleted file mode 100644 index 2e60051..0000000 --- a/[AMAD]_Flows_Tablet +++ /dev/null @@ -1,555 +0,0 @@ - - - - false - com.android.music.metachanged - true - com.android.music.metachanged - - - - - - - - artist = getString("artist"); -track = getString("track"); -album = getString("album"); - false - - - true - HTTP Request: /automagic/deviceInfo, Port 8089 - true - /automagic/deviceInfo - 8089 - true - - - true - HTTP Request: /automagic/mediaPlayer, Port 8089 - true - /automagic/mediaPlayer - 8089 - true - - - true - HTTP Request: /automagic/openURL, Port 8089 - true - /automagic/openURL - 8089 - true - - - true - HTTP Request: /automagic/screenMsg, Port 8089 - true - /automagic/screenMsg - 8089 - true - - - true - HTTP Request: /automagic/setBrightness, Port 8089 - true - /automagic/setBrightness - 8089 - true - - - true - HTTP Request: /automagic/setScreenOnOff, Port 8089 - true - /automagic/setScreenOnOff - 8089 - true - - - true - HTTP Request: /automagic/setVolume, Port 8089 - true - /automagic/setVolume - 8089 - true - - - true - HTTP Request: /automagic/ttsMsg, Port 8089 - true - /automagic/ttsMsg - 8089 - true - - - true - Akku Ladestand: grösser als 0% - 0 - HIGHER_THAN - - - true - Expression: param_button == "back" - param_button == "back" - - - true - Expression: param_button == "next" - param_button == "next" - - - true - Expression: param_button == "play" - param_button == "play" - - - true - Expression: param_button == "stop" - param_button == "stop" - - - true - Expression: param_screen=="off" - param_screen=="off" - - - true - Expression: param_screen=="on" - param_screen=="on" - - - true - Expression: trigger == "com.android.music.metachanged" - trigger == "com.android.music.metachanged" - - - true - Audio Player steuern: Medienknopf Play (Google Play Musik) - true - LAUNCH - KEYCODE_MEDIA_PLAY - true - com.google.android.music - com.google.android.music.playback.MediaButtonIntentReceiver - Google Play Musik - - - true - Audio Player steuern: Medienknopf Stopp (Google Play Musik) - true - LAUNCH - KEYCODE_MEDIA_STOP - true - com.google.android.music - com.google.android.music.playback.MediaButtonIntentReceiver - Google Play Musik - - - true - Audio Player steuern: Medienknopf Weiter (Google Play Musik) - true - LAUNCH - KEYCODE_MEDIA_NEXT - true - com.google.android.music - com.google.android.music.playback.MediaButtonIntentReceiver - Google Play Musik - - - true - Audio Player steuern: Medienknopf Zurück (Google Play Musik) - true - LAUNCH - KEYCODE_MEDIA_PREVIOUS - true - com.google.android.music - com.google.android.music.playback.MediaButtonIntentReceiver - Google Play Musik - - - true - Benachrichtigung auf Bildschirm: {param_message} (lange) - true - {param_message} - - 200 - 250 - false - 1.0 - true - false - TOP_LEFT - 0 - 0 - - - true - Gerät sperren - - - true - HTTP Request: GET http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicAlbum%20{encodeURLForm(album)} speichern in response - http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicAlbum%20{encodeURLForm(album)} - true - false - - GET - X_WWW_FORM_URLENCODED - text/plain - - Lastname=XYZ,Firstname=ABC - 60000 - false - - true - response - /storage/emulated/0/Download/file.bin - - - true - HTTP Request: GET http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicArtist%20{encodeURLForm(artist)} speichern in response - http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicArtist%20{encodeURLForm(artist)} - true - false - - GET - X_WWW_FORM_URLENCODED - text/plain - - Lastname=XYZ,Firstname=ABC - 60000 - false - - true - response - /storage/emulated/0/Download/file.bin - - - true - HTTP Request: GET http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicTrack%20{encodeURLForm(track)} speichern in response - http://YOUR_FHEM_IP:8085/fhem?cmd=setreading%20YOUR_FHEM_DEVICE_NAME%20currentPlayMusicTrack%20{encodeURLForm(track)} - true - false - - GET - X_WWW_FORM_URLENCODED - text/plain - - Lastname=XYZ,Firstname=ABC - 60000 - false - - true - response - /storage/emulated/0/Download/file.bin - - - false - HTTP Response - powerLevel {battery_percentage}@@powerPlugged {battery_plugged}@@volumeMusikBluetooth {volumeMusikBluetooth}@@volumeMusikSpeaker {volumeMusikSpeaker}@@screenBrightness {screenBrightness}@@nextAlarmTime {next_alarmtime}@@nextAlarmDay {next_alarmday} - true - text/html - - - true - Initialisiere Variable Nächster Alarm: Variable next_alarm - next_alarm - - - true - Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness - SYSTEM - screen_brightness - screenBrightness - - - true - Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth - SYSTEM - volume_music_bt_a2dp - volumeMusikBluetooth - - - true - Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker - SYSTEM - volume_music_speaker - volumeMusikSpeaker - - - true - Lautstärke einstellen: Medien auf Level 10 - MUSIC - 10 - true - false - - - false - Lautstärken setzen - false - global_volume_alarm - false - global_volume_dtmf - true - param_volume - false - global_volume_notification - false - global_volume_ring - false - global_volume_system - false - global_volume_voice_call - false - global_ringer_mode - false - global_interruptions_mode - - - true - Lautstärken Speichern - true - global_volume_alarm - true - global_volume_dtmf - true - global_volume_music - true - global_volume_notification - true - global_volume_ring - true - global_volume_system - true - global_volume_voice_call - false - global_ringer_mode - false - global_interruptions_mode - - - true - Lautstärken Wiederherstellen - true - global_volume_alarm - true - global_volume_dtmf - true - global_volume_music - true - global_volume_notification - true - global_volume_ring - true - global_volume_system - true - global_volume_voice_call - false - global_ringer_mode - false - global_interruptions_mode - - - true - Pause: 2s (Gerät wach halten) - 2s - true - - - true - Schalte Display ein: Hell für 60s - true - 60s - true - - - true - Script: next_alarmday = "{next_alarm,dateformat,c}" - - - - true - Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" - - - - true - Setze Systemeinstellung: System screen_brightness auf {param_brightness} - SYSTEM - screen_brightness - {param_brightness} - true - - - true - Sprachausgabe: {param_message} - MUSIC - {param_message} - de_DE - true - 1.0 - true - 1.0 - false - false - false - false - TRANSIENT - - - true - URL in Browser öffnen: {param_url} (mit Chrome) - {param_url} - true - com.android.chrome - com.google.android.apps.chrome.Main - Chrome - - - Displaymessage - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /automagic/screenMsg, Port 8089 - - Benachrichtigung auf Bildschirm: {param_message} (lange) - - - - Informationen - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /automagic/deviceInfo, Port 8089 - - Akku Ladestand: grösser als 0% - Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness - Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker - Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth - Pause: 2s (Gerät wach halten) - Initialisiere Variable Nächster Alarm: Variable next_alarm - Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" - Script: next_alarmday = "{next_alarm,dateformat,c}" - HTTP Response - - - - - - - - - - - - - - - - Mediaplayer - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /automagic/mediaPlayer, Port 8089 - com.android.music.metachanged - - Audio Player steuern: Medienknopf Zurück (Google Play Musik) - Audio Player steuern: Medienknopf Weiter (Google Play Musik) - Audio Player steuern: Medienknopf Stopp (Google Play Musik) - Audio Player steuern: Medienknopf Play (Google Play Musik) - Expression: param_button == "play" - Expression: param_button == "next" - Expression: param_button == "back" - Expression: param_button == "stop" - Expression: trigger == "com.android.music.metachanged" - HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus10Wohnzimmer%20currentPlayMusicAlbum%20{encodeURLForm(album)} speichern in response - HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus10Wohnzimmer%20currentPlayMusicArtist%20{encodeURLForm(artist)} speichern in response - HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8085/fhem?cmd=setreading%20Nexus10Wohnzimmer%20currentPlayMusicTrack%20{encodeURLForm(track)} speichern in response - WLAN Verbunden: TuxNet-AP01 - HTTP Request: GET http://fhem-tuxnet.tuxnet.local:8090/Nexus10Wohnzimmer@@currentPlayMusicAlbum@@{encodeURLForm(album)} speichern in response - - - - - - - - - - - - - - - - openURL - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /automagic/openURL, Port 8089 - - URL in Browser öffnen: {param_url} (mit Chrome) - - - - Set Brightness - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /automagic/setBrightness, Port 8089 - - Setze Systemeinstellung: System screen_brightness auf {param_brightness} - - - - Set Screen On Off - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /automagic/setScreenOnOff, Port 8089 - - Schalte Display ein: Hell für 60s - Expression: param_screen=="off" - Expression: param_screen=="on" - Gerät sperren - - - - - - - Text to Speech - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /automagic/ttsMsg, Port 8089 - - Lautstärken Speichern - Sprachausgabe: {param_message} - Lautstärken Wiederherstellen - Lautstärke einstellen: Medien auf Level 10 - - - - - - - Volume - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /automagic/setVolume, Port 8089 - - Lautstärken setzen - - - \ No newline at end of file From b765bd95406b55fd0047e989ddc8f27be6141e20 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Mon, 10 Aug 2015 15:44:45 +0200 Subject: [PATCH 02/10] Abarbeitung der Set Befehle in eine einzige Sub untergebracht, Fehlerstatus und Fehlermedungen verbessert, Set Alarmtimer eingebaut --- 74_AMAD.pm | 240 ++++++++++++++++++++++++----------------------------- 1 file changed, 109 insertions(+), 131 deletions(-) diff --git a/74_AMAD.pm b/74_AMAD.pm index e00e00f..d1151aa 100644 --- a/74_AMAD.pm +++ b/74_AMAD.pm @@ -22,7 +22,7 @@ # ################################################################ -###### Version 0.2.1 ############ +###### Version 0.3.0 ############ @@ -159,46 +159,31 @@ sub AMAD_Set($$@) . " MediaPlayer:play,stop,next,back" . " Brightness:slider,0,1,255" . " Screen:on,off" - . " openURL"; - - - if (lc $cmd eq 'screenmsg') { - Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val); - return AMAD_SetScreenMsg ($hash, @val) if (defined(@val)); - } - elsif (lc $cmd eq 'ttsmsg') { - Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val)); - return AMAD_SetTtsMsg ($hash, @val); - } - elsif (lc $cmd eq 'volume') { - Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val)); - return AMAD_SetVolume ($hash, @val); - } - elsif (lc $cmd eq 'mediaplayer') { - Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val)); - return AMAD_SetMediaplayer ($hash, @val); - } - elsif (lc $cmd eq 'devicestate') { - Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val)); - my $v = join(" ", @val); + . " openURL" + . " Alarmtime:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45"; - readingsSingleUpdate ($hash,$cmd,$v,1); + + if (lc $cmd eq 'screenmsg' + || lc $cmd eq 'ttsmsg' + || lc $cmd eq 'volume' + || lc $cmd eq 'mediaplayer' + || lc $cmd eq 'devicestate' + || lc $cmd eq 'brightness' + || lc $cmd eq 'screen' + || lc $cmd eq 'openurl' + || lc $cmd eq 'alarmtime') { - return undef; - } - elsif (lc $cmd eq 'brightness') { - Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val)); - return AMAD_SetBrightness ($hash, @val); - } - elsif (lc $cmd eq 'screen') { - Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val)); - return AMAD_SetScreen ($hash, @val); - } - elsif (lc $cmd eq 'openurl') { - Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val)); - return AMAD_SetOpenURL ($hash, @val); - } + Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val); + return AMAD_SelectSetCmd ($hash, $cmd, @val); + } +# elsif (lc $cmd eq 'devicestate') { +# Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val)); +# my $v = join(" ", @val); +# +# readingsSingleUpdate ($hash,$cmd,$v,1); +# +# return undef; return "Unknown argument $cmd, bearword as argument or wrong parameter(s), choose one of $list"; } @@ -284,12 +269,12 @@ sub AMAD_HTTP_POST($$) if ($hash->{STATE} eq "initialized") { Log3 $name, 4, "AMAD ($name) - AMAD_HTTP_POST: set command only works if STATE active, please wait next interval run"; - return; + return "set command only works if STATE active, please wait next interval run"; } if ($hash->{STATE} eq "error") { Log3 $name, 4, "AMAD ($name) - AMAD_HTTP_POST: error while send Set command. Please check IP or PORT"; - return; + return "error while send Set command. Please check IP or PORT"; } $hash->{STATE} = "Send HTTP POST"; @@ -310,104 +295,97 @@ sub AMAD_HTTP_POST($$) return undef; } -sub AMAD_SetScreenMsg($@) +sub AMAD_SelectSetCmd($$@) { - my ($hash, @data) = @_; + my ($hash, $cmd, @data) = @_; my $name = $hash->{NAME}; my $host = $hash->{HOST}; my $port = $hash->{PORT}; - my $msg = join(" ", @data); - $msg =~ s/\s/%20/g; - - my $url = "http://" . $host . ":" . $port . "/automagic/screenMsg?message=$msg"; - Log3 $name, 4, "AMAD ($name) - Sub AMAD_SetScreenMsg"; + if (lc $cmd eq 'screenmsg') { + my $msg = join(" ", @data); + $msg =~ s/\s/%20/g; + + my $url = "http://" . $host . ":" . $port . "/automagic/screenMsg?message=$msg"; + Log3 $name, 4, "AMAD ($name) - Sub AMAD_SetScreenMsg"; - return AMAD_HTTP_POST ($hash,$url); + return AMAD_HTTP_POST ($hash,$url); + } + + elsif (lc $cmd eq 'ttsmsg') { + my $msg = join(" ", @data); + $msg =~ s/\s/%20/g; + + my $url = "http://" . $host . ":" . $port . "/automagic/ttsMsg?message=$msg"; + + return AMAD_HTTP_POST ($hash,$url); + } + + elsif (lc $cmd eq 'volume') { + my $vol = join(" ", @data); + + my $url = "http://" . $host . ":" . $port . "/automagic/setVolume?volume=$vol"; + + AMAD_GetUpdateLocal($hash); + Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; + return AMAD_HTTP_POST ($hash,$url); + } + + elsif (lc $cmd eq 'mediaplayer') { + my $btn = join(" ", @data); + + my $url = "http://" . $host . ":" . $port . "/automagic/mediaPlayer?button=$btn"; + + return AMAD_HTTP_POST ($hash,$url); + } + + elsif (lc $cmd eq 'devicestate') { + my $v = join(" ", @data); + + readingsSingleUpdate ($hash,$cmd,$v,1); + + return undef; + } + + elsif (lc $cmd eq 'brightness') { + my $bri = join(" ", @data); + + my $url = "http://" . $host . ":" . $port . "/automagic/setBrightness?brightness=$bri"; + + AMAD_GetUpdateLocal($hash); + Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; + return AMAD_HTTP_POST ($hash,$url); + } + + elsif (lc $cmd eq 'screen') { + my $mod = join(" ", @data); + + my $url = "http://" . $host . ":" . $port . "/automagic/setScreenOnOff?screen=$mod"; + + return AMAD_HTTP_POST ($hash,$url); + } + + elsif (lc $cmd eq 'openurl') { + my $openurl = join(" ", @data); + + my $url = "http://" . $host . ":" . $port . "/automagic/openURL?url=$openurl"; + + return AMAD_HTTP_POST ($hash,$url); + } + elsif (lc $cmd eq 'alarmtime') { + my $alarmTime = join(" ", @data); + my @alarm = split(":", $alarmTime); + + my $url = "http://" . $host . ":" . $port . "/automagic/setAlarm?hour=".$alarm[0]."&minute=".$alarm[1]; + + AMAD_GetUpdateLocal($hash); + Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; + return AMAD_HTTP_POST ($hash,$url); + } + + return undef; } -sub AMAD_SetTtsMsg($@) { - my ($hash, @data) = @_; - my $name = $hash->{NAME}; - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; - - my $msg = join(" ", @data); - $msg =~ s/\s/%20/g; - - my $url = "http://" . $host . ":" . $port . "/automagic/ttsMsg?message=$msg"; - - return AMAD_HTTP_POST ($hash,$url); -} - -sub AMAD_SetVolume($@) { - my ($hash, @data) = @_; - my $name = $hash->{NAME}; - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; - - my $vol = join(" ", @data); - - my $url = "http://" . $host . ":" . $port . "/automagic/setVolume?volume=$vol"; - - AMAD_GetUpdateLocal($hash); - Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; - return AMAD_HTTP_POST ($hash,$url); -} - -sub AMAD_SetBrightness($@) { - my ($hash, @data) = @_; - my $name = $hash->{NAME}; - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; - - my $bri = join(" ", @data); - - my $url = "http://" . $host . ":" . $port . "/automagic/setBrightness?brightness=$bri"; - - AMAD_GetUpdateLocal($hash); - Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; - return AMAD_HTTP_POST ($hash,$url); -} - -sub AMAD_SetScreen($@) { - my ($hash, @data) = @_; - my $name = $hash->{NAME}; - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; - - my $mod = join(" ", @data); - - my $url = "http://" . $host . ":" . $port . "/automagic/setScreenOnOff?screen=$mod"; - - return AMAD_HTTP_POST ($hash,$url); -} - -sub AMAD_SetOpenURL($@) { - my ($hash, @data) = @_; - my $name = $hash->{NAME}; - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; - - my $openurl = join(" ", @data); - - my $url = "http://" . $host . ":" . $port . "/automagic/openURL?url=$openurl"; - - return AMAD_HTTP_POST ($hash,$url); -} - -sub AMAD_SetMediaplayer($@) { - my ($hash, @data) = @_; - my $name = $hash->{NAME}; - my $host = $hash->{HOST}; - my $port = $hash->{PORT}; - - my $btn = join(" ", @data); - - my $url = "http://" . $host . ":" . $port . "/automagic/mediaPlayer?button=$btn"; - - return AMAD_HTTP_POST ($hash,$url); -} 1; @@ -441,4 +419,4 @@ sub AMAD_SetMediaplayer($@) { =end html_DE -=cut +=cut \ No newline at end of file From 1300ef742f536a499f01d8546e2ff4c2e8f206ab Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Mon, 10 Aug 2015 22:14:58 +0200 Subject: [PATCH 03/10] =?UTF-8?q?Timepicker=20f=C3=BCr=20set=20nextAlarm?= =?UTF-8?q?=20eingebaut,=20defaultVolume=20als=20Reading=20stellt=20den=20?= =?UTF-8?q?Volumewert=20das=20aktuell=20verwendeten=20Outputes=20da=20-=20?= =?UTF-8?q?also=20entweder=20Speaker=20oder=20Bluetooth=20oder=20Headphone?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 74_AMAD.pm | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/74_AMAD.pm b/74_AMAD.pm index d1151aa..654e245 100644 --- a/74_AMAD.pm +++ b/74_AMAD.pm @@ -154,24 +154,24 @@ sub AMAD_Set($$@) my $list = "screenMsg" . " ttsMsg" - . " Volume:slider,0,1,15" + . " defaultVolume:slider,0,1,15" . " DeviceState:online,offline" . " MediaPlayer:play,stop,next,back" - . " Brightness:slider,0,1,255" + . " screenBrightness:slider,0,1,255" . " Screen:on,off" . " openURL" - . " Alarmtime:00:00,00:15,00:30,00:45,01:00,01:15,01:30,01:45,02:00,02:15,02:30,02:45,03:00,03:15,03:30,03:45,04:00,04:15,04:30,04:45,05:00,05:15,05:30,05:45,06:00,06:15,06:30,06:45,07:00,07:15,07:30,07:45,08:00,08:15,08:30,08:45,09:00,09:15,09:30,09:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00,12:15,12:30,12:45,13:00,13:15,13:30,13:45,14:00,14:15,14:30,14:45,15:00,15:15,15:30,15:45,16:00,16:15,16:30,16:45,17:00,17:15,17:30,17:45,18:00,18:15,18:30,18:45,19:00,19:15,19:30,19:45,20:00,20:15,20:30,20:45,21:00,21:15,21:30,21:45,22:00,22:15,22:30,22:45,23:00,23:15,23:30,23:45"; + . " nextAlarmTime:time"; if (lc $cmd eq 'screenmsg' || lc $cmd eq 'ttsmsg' - || lc $cmd eq 'volume' + || lc $cmd eq 'defaultvolume' || lc $cmd eq 'mediaplayer' || lc $cmd eq 'devicestate' - || lc $cmd eq 'brightness' + || lc $cmd eq 'screenbrightness' || lc $cmd eq 'screen' || lc $cmd eq 'openurl' - || lc $cmd eq 'alarmtime') { + || lc $cmd eq 'nextalarmtime') { Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val); return AMAD_SelectSetCmd ($hash, $cmd, @val); @@ -321,11 +321,13 @@ sub AMAD_SelectSetCmd($$@) return AMAD_HTTP_POST ($hash,$url); } - elsif (lc $cmd eq 'volume') { + elsif (lc $cmd eq 'defaultvolume') { my $vol = join(" ", @data); my $url = "http://" . $host . ":" . $port . "/automagic/setVolume?volume=$vol"; - + + readingsSingleUpdate ($hash,$cmd,$vol,1); + AMAD_GetUpdateLocal($hash); Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; return AMAD_HTTP_POST ($hash,$url); @@ -347,7 +349,7 @@ sub AMAD_SelectSetCmd($$@) return undef; } - elsif (lc $cmd eq 'brightness') { + elsif (lc $cmd eq 'screenbrightness') { my $bri = join(" ", @data); my $url = "http://" . $host . ":" . $port . "/automagic/setBrightness?brightness=$bri"; @@ -372,7 +374,7 @@ sub AMAD_SelectSetCmd($$@) return AMAD_HTTP_POST ($hash,$url); } - elsif (lc $cmd eq 'alarmtime') { + elsif (lc $cmd eq 'nextalarmtime') { my $alarmTime = join(" ", @data); my @alarm = split(":", $alarmTime); From 4ca174658c45876d766260fb2e7adbe59815a46a Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Mon, 10 Aug 2015 22:53:58 +0200 Subject: [PATCH 04/10] =?UTF-8?q?neuen=20Flow=20hinzugef=C3=BCgt,=20setAla?= =?UTF-8?q?rmtime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- [Automagic] Flows_Alarmtime | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 [Automagic] Flows_Alarmtime diff --git a/[Automagic] Flows_Alarmtime b/[Automagic] Flows_Alarmtime new file mode 100644 index 0000000..4c64246 --- /dev/null +++ b/[Automagic] Flows_Alarmtime @@ -0,0 +1,29 @@ + + + + true + HTTP Request: /automagic/setAlarm, Port 8089 + true + /automagic/setAlarm + 8089 + true + + + true + Setze Alarm: um {param_hour}:{param_minute} + + {param_hour} + {param_minute} + + + Alarmtime + FHEM Info / Steuerung über AMAD Modul + true + PARALLEL + Setze Alarm: um {param_hour}:{param_minute} + + HTTP Request: /automagic/setAlarm, Port 8089 + + + + \ No newline at end of file From 2457ba4c08b707929e23e19f53ed0ecfa911d6d5 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Tue, 11 Aug 2015 13:59:42 +0200 Subject: [PATCH 05/10] =?UTF-8?q?kompletter=20Umbau=20auf=20die=20Verwendu?= =?UTF-8?q?ng=20von=20nur=202=20Flows,=20einer=20f=C3=BCr=20die=20Informat?= =?UTF-8?q?ionen=20einer=20f=C3=BCr=20die=20Set=20Commands.=20ACHTUNG=20IN?= =?UTF-8?q?KOMPATIBEL=20zu=20den=20=C3=A4lteren=20Versionen=20des=20Module?= =?UTF-8?q?s=20und=20der=20Flows?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 74_AMAD.pm | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/74_AMAD.pm b/74_AMAD.pm index 654e245..88e63da 100644 --- a/74_AMAD.pm +++ b/74_AMAD.pm @@ -155,10 +155,10 @@ sub AMAD_Set($$@) my $list = "screenMsg" . " ttsMsg" . " defaultVolume:slider,0,1,15" - . " DeviceState:online,offline" - . " MediaPlayer:play,stop,next,back" + . " deviceState:online,offline" + . " mediaPlayer:play,stop,next,back" . " screenBrightness:slider,0,1,255" - . " Screen:on,off" + . " screen:on,off" . " openURL" . " nextAlarmTime:time"; @@ -195,7 +195,7 @@ sub AMAD_RetrieveAutomagicInfo($) my $host = $hash->{HOST}; my $port = $hash->{PORT}; - my $url = "http://" . $host . ":" . $port . "/automagic/deviceInfo"; + my $url = "http://" . $host . ":" . $port . "/fhem-amad/deviceInfo/"; HttpUtils_NonblockingGet( { @@ -306,7 +306,7 @@ sub AMAD_SelectSetCmd($$@) my $msg = join(" ", @data); $msg =~ s/\s/%20/g; - my $url = "http://" . $host . ":" . $port . "/automagic/screenMsg?message=$msg"; + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/screenMsg?message=$msg"; Log3 $name, 4, "AMAD ($name) - Sub AMAD_SetScreenMsg"; return AMAD_HTTP_POST ($hash,$url); @@ -316,7 +316,7 @@ sub AMAD_SelectSetCmd($$@) my $msg = join(" ", @data); $msg =~ s/\s/%20/g; - my $url = "http://" . $host . ":" . $port . "/automagic/ttsMsg?message=$msg"; + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/ttsMsg?message=$msg"; return AMAD_HTTP_POST ($hash,$url); } @@ -324,7 +324,7 @@ sub AMAD_SelectSetCmd($$@) elsif (lc $cmd eq 'defaultvolume') { my $vol = join(" ", @data); - my $url = "http://" . $host . ":" . $port . "/automagic/setVolume?volume=$vol"; + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/setVolume?volume=$vol"; readingsSingleUpdate ($hash,$cmd,$vol,1); @@ -336,7 +336,7 @@ sub AMAD_SelectSetCmd($$@) elsif (lc $cmd eq 'mediaplayer') { my $btn = join(" ", @data); - my $url = "http://" . $host . ":" . $port . "/automagic/mediaPlayer?button=$btn"; + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/mediaPlayer?button=$btn"; return AMAD_HTTP_POST ($hash,$url); } @@ -352,7 +352,7 @@ sub AMAD_SelectSetCmd($$@) elsif (lc $cmd eq 'screenbrightness') { my $bri = join(" ", @data); - my $url = "http://" . $host . ":" . $port . "/automagic/setBrightness?brightness=$bri"; + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/setBrightness?brightness=$bri"; AMAD_GetUpdateLocal($hash); Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; @@ -362,7 +362,7 @@ sub AMAD_SelectSetCmd($$@) elsif (lc $cmd eq 'screen') { my $mod = join(" ", @data); - my $url = "http://" . $host . ":" . $port . "/automagic/setScreenOnOff?screen=$mod"; + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/setScreenOnOff?screen=$mod"; return AMAD_HTTP_POST ($hash,$url); } @@ -370,7 +370,7 @@ sub AMAD_SelectSetCmd($$@) elsif (lc $cmd eq 'openurl') { my $openurl = join(" ", @data); - my $url = "http://" . $host . ":" . $port . "/automagic/openURL?url=$openurl"; + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/openURL?url=$openurl"; return AMAD_HTTP_POST ($hash,$url); } @@ -378,7 +378,7 @@ sub AMAD_SelectSetCmd($$@) my $alarmTime = join(" ", @data); my @alarm = split(":", $alarmTime); - my $url = "http://" . $host . ":" . $port . "/automagic/setAlarm?hour=".$alarm[0]."&minute=".$alarm[1]; + my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/setAlarm?hour=".$alarm[0]."&minute=".$alarm[1]; AMAD_GetUpdateLocal($hash); Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; From 0dc01beffedcd6eca315671d5e5d95b849dfd26b Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Thu, 13 Aug 2015 14:27:23 +0200 Subject: [PATCH 06/10] =?UTF-8?q?Dokumentation=20angepasst=20und=20vervoll?= =?UTF-8?q?st=C3=A4ndigt,=20diverse=20Rechtschreibfehler=20korrigiert,=20l?= =?UTF-8?q?eere=20Eintr=C3=A4ge=20in=20den=20SetCommands=20abgefabgen=20-?= =?UTF-8?q?=20kein=20Absturz=20mehr=20von=20FHEM.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 74_AMAD.pm | 145 ++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 115 insertions(+), 30 deletions(-) diff --git a/74_AMAD.pm b/74_AMAD.pm index 88e63da..cdc838f 100644 --- a/74_AMAD.pm +++ b/74_AMAD.pm @@ -22,7 +22,7 @@ # ################################################################ -###### Version 0.3.0 ############ +###### Version 0.3.6 ############ @@ -173,17 +173,9 @@ sub AMAD_Set($$@) || lc $cmd eq 'openurl' || lc $cmd eq 'nextalarmtime') { - Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val); - return AMAD_SelectSetCmd ($hash, $cmd, @val); + Log3 $name, 5, "AMAD ($name) - set $name $cmd ".join(" ", @val); + return AMAD_SelectSetCmd ($hash, $cmd, @val) if (@val); } - -# elsif (lc $cmd eq 'devicestate') { -# Log3 $name, 4, "AMAD ($name) - set $name $cmd ".join(" ", @val) if (defined(@val)); -# my $v = join(" ", @val); -# -# readingsSingleUpdate ($hash,$cmd,$v,1); -# -# return undef; return "Unknown argument $cmd, bearword as argument or wrong parameter(s), choose one of $list"; } @@ -219,13 +211,13 @@ sub AMAD_RetrieveAutomagicInfoFinished($$$) my $name = $hash->{NAME}; my $host = $hash->{HOST}; - Log3 $name, 3, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: calling Host: $host"; + Log3 $name, 4, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: calling Host: $host"; if (defined($err)) { if ($err ne "") { $hash->{STATE} = "error" if ($hash->{STATE} ne "initialized"); - Log3 $name, 4, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: error while requesting AutomagicInfo: $err"; + Log3 $name, 5, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: error while requesting AutomagicInfo: $err"; return; } } @@ -233,7 +225,7 @@ sub AMAD_RetrieveAutomagicInfoFinished($$$) if($data eq "" and exists($param->{code})) { $hash->{STATE} = "error" if ($hash->{STATE} ne "initialized"); - Log3 $name, 4, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: received http code ".$param->{code}." without any data after requesting AMAD AutomagicInfo"; + Log3 $name, 5, "AMAD ($name) - AMAD_RetrieveAutomagicInfoFinished: received http code ".$param->{code}." without any data after requesting AMAD AutomagicInfo"; return; } @@ -268,12 +260,12 @@ sub AMAD_HTTP_POST($$) if ($hash->{STATE} eq "initialized") { - Log3 $name, 4, "AMAD ($name) - AMAD_HTTP_POST: set command only works if STATE active, please wait next interval run"; + Log3 $name, 3, "AMAD ($name) - AMAD_HTTP_POST: set command only works if STATE active, please wait next interval run"; return "set command only works if STATE active, please wait next interval run"; } if ($hash->{STATE} eq "error") { - Log3 $name, 4, "AMAD ($name) - AMAD_HTTP_POST: error while send Set command. Please check IP or PORT"; + Log3 $name, 3, "AMAD ($name) - AMAD_HTTP_POST: error while send Set command. Please check IP or PORT"; return "error while send Set command. Please check IP or PORT"; } @@ -397,28 +389,121 @@ sub AMAD_SelectSetCmd($$@)

AMAD - Automagic Android Device

    - Dieses Modul liefert, in Verbindung mit der Android APP Automagic, diverse Informationen von Android Geräten. - Weiterhin gibt es Dir die Möglichkeit diese zu steuern. Bis jetzt ist das ändern der Medialautstärke möglich, - sowie Play, Stop, Titel-Next, Titel-Back eines im Automagic-Flow ausgesuchten Players.
    - An Informationen können alle wiedergegeben werden, welche von Automagic als Action in Form einer Variable gesammelt und als - HTTP Respons Text zurück gegeben werden. - Für all diese Informationen/Aktionen ist ein sogenannter Flow in Automagic auf dem entsprechenden Android Gerät nöt. - Als Trigger im Flow wird immer ein HTTP Request mit einem selbst vergebenen Port und einer angepassten URL verwendet. Dieser Port - muß der selbe sein welcher beim anölegen des Devices vergeben wurde!! + 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.90Euro kostet) funktioniert wie Tasker, ist aber bei weitem User freundlicher. + Im Auslieferiungszustand werden folgende Zustände dargestellt: +
      +
      +
    • Standardlautstärke
    • +
    • Status des Androidgerätes - Online/Offline
    • +
    • nächste Alarmzeit
    • +
    • nächster Alarmtag
    • +
    • Ladestatus - Netztei angeschlossen / nicht angeschlossen
    • +
    • Batteriestatus in %
    • +
    • Bildschirmhelligkeit
    • +
    • Media Lautstärke des Lautsprechers am Gerät
    • +
    • Media Lautstärke des Bluetooth Lautsprechers
    • +
    +

    + Als Extra können noch aktueller Titel, Interpret und Album des verwendeten Mediaplayers angezeigt werden. +
    + Mit etwas Einarbeitung können jegliche Informationen welche Automagic bereit stellt in FHEM angezeigt werden. Hierzu bedarf es lediglich + einer kleinen Anpassung des "Information" Flows +
    +
    + Das Modul gibt Dir auch die Möglichkeit Deine Androidgeräte zu steuern. So können folgende Aktionen durchgeführt werden. +
      +
      +
    • Medienlautstärke regeln
    • +
    • nächste Alarmzeit setzen
    • +
    • Bildschirmhelligkeit einstellen
    • +
    • Bildschirm An/Aus machen
    • +
    • Mediaplayer steuern (Play, Stop, nächster Titel, vorheriger Titel)
    • +
    • eine URL im Browser öffnen
    • +
    • eine Nachricht senden welche am Bildschirm angezeigt wird
    • +
    • eine Nachricht senden welche angesagt wird (TTS)
    • +
    +

    + Für all diese Aktionen und Informationen wird auf dem Androidgerät Automagic und ein so genannter Flow benötigt. Die App müst + Ihr Euch besorgen, die Flows bekommt Ihr von mir zusammen mit dem AMAD Modul. +

    + Wie genau verwendet man nun AMAD? +
      +
      +
    • Installiert Euch die App "Automagic Premium" aus dem App Store oder die Testversion von hier
    • +
    • ladet Euch das AMAD Modul und die Flowfiles von GitHub runter
    • +
    • installiert die zwei Flows und aktiviert erstmal nur den "Information" Flow, eventuell bei den + FlowUpdates mal schauen ob es was neueres gibt und den entsprechenden Flow updaten oder den alten löschen und den neuen einzelnen installieren
    • +
    • kopiert die Moduldatei 74_AMAD.pm nach $FHEMPATH/FHEM. Geht auf die FHEM Frontendseite und gebt dort in der Kommandozeile reload 74_AMAD.pm ein
    • +
    +

    + Nun müsst Ihr nur noch ein Device in FHEM anlegen.

    Define -
      - define <name> AMAD <IP-ADRESSE> <PORT> <interval> +

        + define <name> AMAD <IP-ADRESSE> <PORT> <INTERVAL>

        Beispiel: -
          - define Nexus10Wohnzimmer AMAD 192.168.0.23 8080 180
          +

            + define WandTabletWohnzimmer AMAD 192.168.0.23 8090 180

          - Diese Anweisung erstellt ein neues AMAD-Device. Die Parameter IP-ADRESSE und PORT legen die IP Adresse des Android Ger&aaml;tes - sowie den unter Automagic im Trigger HTTP Request angegebenen Port fest.
          + Diese Anweisung erstellt ein neues AMAD-Device. Die Parameter IP-ADRESSE und PORT legen die IP Adresse des Android Gerätes + sowie den, in den Flows des Trigger HTTP Request, angegebenen Port fest.
          INTERVAL ist der Zeitabstand in dem ein erneuter Informationsabruf stattfinden soll. Alle x Sekunden. + Bei mir hat sich 180 gut bewährt, also alle 3 Minuten
          + Bitte gebt für sofortige Erfolge als Port 8090 ein, das ist der Port der in den mitgelieferten Automagic Flows als Trigger Port eingetragen ist.
          + Dieser kann später mit Erfahrung auch geädert werden
        +

        + Fertig! Nach anlegen des Devices sollten bereits die ersten Readings reinkommen. +

        + + Readings +

          +
        • defaultVolume - Lautstärkewert welcher über "set defaultVolume" gesetzt wurde.
        • +
        • deviceState - Status des Androidgerätes, muss selbst mit setreading gesetzt werden z.B. über die Anwesenheitskontrolle.
          + Ist Offline gesetzt, wird der Intervall zum Informationsabruf aus gesetzt.
        • +
        • nextAlarmDay - aktiver Alarmtag
        • +
        • nextAlarmTime - aktive Alarmzeit
        • +
        • powerLevel - Status der Batterie in %
        • +
        • powerPlugged - Netzteil angeschlossen? 0=NEIN, 2=JA
        • +
        • screenBrightness - Bildschirmhelligkeit von 0-255
        • +
        • volumeMusikBluetooth - Media Lautstärke von angeschlossenden Bluetooth Lautsprechern
        • +
        • volumeMusikSpeaker - Media Lautstärke der internen Lautsprecher
        • +
          + Die Readings volumeMusikBluetooth und volumeMusikSpeaker spiegeln die jeweilige Medialautstärke der angeschlossenden Bluetoothlautsprechern oder der internen Lautsprecher.
          + Sofern man die jeweiligen Lautstärken ausschließlich über den Set Befehl setzt, wird eine der beiden immer mit dem defaultVolume Reading über ein stimmen. +
        +

        + + Set +

          +
        • defaultVolume - setzt die Medialautstärke. Entweder die internen Lautsprecher oder sofern angeschlossen die Bluetoothlautsprecher
        • +
        • deviceState - setzt den Device Status Online/Offline. Siehe Readings
        • +
        • mediaPlayer - steuert den Standard Mediaplayer. play, stop, Titel zürück, Titel vor.
        • +
        • nextAlarmTime - setzt die Alarmzeit. Geht aber nur innerhalb der nächsten 24Std.
        • +
        • openURL - öffnet eine URL im Standardbrowser
        • +
        • screen - setzt den Bildschirm auf AN oder AUS mit Sperre
        • +
        • screenBrightness - setzt die Bildschirmhelligkeit, von 0-255
        • +
        • screenMsg - versendet eine Bildschirmnachricht
        • +
        • ttsMsg - versendet eine Nachricht welche als Sprachnachricht ausgegeben wird
        • +
        +


        + Anwendungsbeispiele: +

          + Ich habe die Ladegeräte für meine Androidgeräte an Funkschaltsteckdosen. ein DOIF schaltet bei unter 30% die Steckdose ein und bei über 90% wieder aus. Morgens lasse ich mich + über mein Tablet im Schlafzimmer mit Musik wecken. Verwendet wird hierzu der wakeuptimer des RESIDENTS Modules. Das abspielen stoppe ich dann von Hand. Danach erfolgt noch eine + Ansage wie das Wetter gerade ist und wird.
          + Mein 10" Tablet im Wohnzimmer ist Mediaplayer für das Wohnzimmer mit Bluetoothlautsprechern. Die Lautstärke wird automatisch runter gesetzt wenn die Fritzbox einen Anruf auf das + Wohnzimmer Handgerät signalisiert. +
        +


        + Und zu guter letzt möchte ich mich noch bedanken.
        + Der größte Dank geht an meinen Mentor Andre (justme1968), er hat mir mit hilfreichen Tips geholfen Perlcode zu verstehen und Spaß am programmieren zu haben.
        + Auch möchte ich mich bei Jens bedanken (jensb) welcher mir ebenfalls mit hilfreichen Tips bei meinen aller ersten Gehversuchen beim Perlcode schreiben unterstützt hat.
        + So und nun noch ein besonderer Dank an pah (Prof. Dr. Peter Henning ), ohne seine Aussage "Keine Ahnung hatten wir alle mal, das ist keine Ausrede" hätte ich bestimmt nicht angefangen Interesse an + Modulentwicklung zu zeigen :-)
      =end html_DE =cut \ No newline at end of file From ad9c35987c959e039ddb32203b528d72ef4ae912 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Thu, 13 Aug 2015 14:39:37 +0200 Subject: [PATCH 07/10] =?UTF-8?q?Flows=20f=C3=BCr=20die=20neue=20Version?= =?UTF-8?q?=20hinzugef=C3=BCgt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- [Automagic] AMAD Flows v0.3.6 | 465 ++++++++++++++++++++++++++++++++++ [Automagic] Flows_Alarmtime | 29 --- 2 files changed, 465 insertions(+), 29 deletions(-) create mode 100644 [Automagic] AMAD Flows v0.3.6 delete mode 100644 [Automagic] Flows_Alarmtime diff --git a/[Automagic] AMAD Flows v0.3.6 b/[Automagic] AMAD Flows v0.3.6 new file mode 100644 index 0000000..4880c10 --- /dev/null +++ b/[Automagic] AMAD Flows v0.3.6 @@ -0,0 +1,465 @@ + + + + false + com.android.music.metachanged + true + com.android.music.metachanged + + + + + + + + artist = getString("artist"); +track = getString("track"); +album = getString("album"); + false + + + true + HTTP Request: /fhem-amad/deviceInfo/, Port 8090 + true + /fhem-amad/deviceInfo/ + 8090 + true + + + true + HTTP Request: /fhem-amad/setCommands/*, Port 8090 + true + /fhem-amad/setCommands/* + 8090 + true + + + true + Akku Ladestand: grösser als 0% + 0 + HIGHER_THAN + + + true + Expression: param_button == "back" + param_button == "back" + + + true + Expression: param_button == "next" + param_button == "next" + + + true + Expression: param_button == "play" + param_button == "play" + + + true + Expression: param_button == "stop" + param_button == "stop" + + + true + Expression: param_screen=="off" + param_screen=="off" + + + true + Expression: param_screen=="on" + param_screen=="on" + + + true + Expression: request_path == "/fhem-amad/setCommands/mediaPlayer" + request_path == "/fhem-amad/setCommands/mediaPlayer" + + + true + Expression: request_path == "/fhem-amad/setCommands/openURL" + request_path == "/fhem-amad/setCommands/openURL" + + + true + Expression: request_path == "/fhem-amad/setCommands/screenMsg" + request_path == "/fhem-amad/setCommands/screenMsg" + + + true + Expression: request_path == "/fhem-amad/setCommands/setAlarm" + request_path == "/fhem-amad/setCommands/setAlarm" + + + true + Expression: request_path == "/fhem-amad/setCommands/setBrightness" + request_path == "/fhem-amad/setCommands/setBrightness" + + + true + Expression: request_path == "/fhem-amad/setCommands/setScreenOnOff" + request_path == "/fhem-amad/setCommands/setScreenOnOff" + + + true + Expression: request_path == "/fhem-amad/setCommands/setVolume" + request_path == "/fhem-amad/setCommands/setVolume" + + + true + Expression: request_path == "/fhem-amad/setCommands/ttsMsg" + request_path == "/fhem-amad/setCommands/ttsMsg" + + + true + Expression: trigger == "com.android.music.metachanged" + trigger == "com.android.music.metachanged" + + + true + WLAN Verbunden: + false + + + + true + Audio Player steuern: Medienknopf Play (Google Play Musik) + true + LAUNCH + KEYCODE_MEDIA_PLAY + true + com.google.android.music + com.google.android.music.playback.MediaButtonIntentReceiver + Google Play Musik + + + true + Audio Player steuern: Medienknopf Stopp (Google Play Musik) + true + LAUNCH + KEYCODE_MEDIA_STOP + true + com.google.android.music + com.google.android.music.playback.MediaButtonIntentReceiver + Google Play Musik + + + true + Audio Player steuern: Medienknopf Weiter (Google Play Musik) + true + LAUNCH + KEYCODE_MEDIA_NEXT + true + com.google.android.music + com.google.android.music.playback.MediaButtonIntentReceiver + Google Play Musik + + + true + Audio Player steuern: Medienknopf Zurück (Google Play Musik) + true + LAUNCH + KEYCODE_MEDIA_PREVIOUS + true + com.google.android.music + com.google.android.music.playback.MediaButtonIntentReceiver + Google Play Musik + + + true + Benachrichtigung auf Bildschirm: {param_message} (lange) + true + {param_message} + + 200 + 250 + false + 1.0 + true + false + TOP_LEFT + 0 + 0 + + + true + Gerät sperren + + + true + HTTP Request: GET http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicAlbum%20{encodeURLForm(album)} speichern in response + http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicAlbum%20{encodeURLForm(album)} + true + false + + GET + X_WWW_FORM_URLENCODED + text/plain + + Lastname=XYZ,Firstname=ABC + 60000 + false + + true + response + /storage/emulated/0/Download/file.bin + + + true + HTTP Request: GET http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicArtist%20{encodeURLForm(artist)} speichern in response + http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicArtist%20{encodeURLForm(artist)} + true + false + + GET + X_WWW_FORM_URLENCODED + text/plain + + Lastname=XYZ,Firstname=ABC + 60000 + false + + true + response + /storage/emulated/0/Download/file.bin + + + true + HTTP Request: GET http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicTrack%20{encodeURLForm(track)} speichern in response + http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicTrack%20{encodeURLForm(track)} + true + false + + GET + X_WWW_FORM_URLENCODED + text/plain + + Lastname=XYZ,Firstname=ABC + 60000 + false + + true + response + /storage/emulated/0/Download/file.bin + + + false + HTTP Response + powerLevel {battery_percentage}@@powerPlugged {battery_plugged}@@volumeMusikBluetooth {volumeMusikBluetooth}@@volumeMusikSpeaker {volumeMusikSpeaker}@@screenBrightness {screenBrightness}@@nextAlarmTime {next_alarmtime}@@nextAlarmDay {next_alarmday} + true + text/html + + + true + Initialisiere Variable Nächster Alarm: Variable next_alarm + next_alarm + + + true + Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness + SYSTEM + screen_brightness + screenBrightness + + + true + Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth + SYSTEM + volume_music_bt_a2dp + volumeMusikBluetooth + + + true + Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker + SYSTEM + volume_music_speaker + volumeMusikSpeaker + + + false + Lautstärken setzen + false + global_volume_alarm + false + global_volume_dtmf + true + param_volume + false + global_volume_notification + false + global_volume_ring + false + global_volume_system + false + global_volume_voice_call + false + global_ringer_mode + false + global_interruptions_mode + + + true + Pause: 2s (Gerät wach halten) + 2s + true + + + true + Schalte Display ein: Hell für 60s + true + 60s + true + + + true + Script: next_alarmday = "{next_alarm,dateformat,c}" + + + + true + Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" + + + + true + Setze Alarm: um {param_hour}:{param_minute} + + {param_hour} + {param_minute} + + + true + Setze Systemeinstellung: System screen_brightness auf {param_brightness} + SYSTEM + screen_brightness + {param_brightness} + true + + + true + Sprachausgabe: {param_message} + MUSIC + {param_message} + de_DE + true + 1.0 + true + 1.0 + false + false + false + false + TRANSIENT + + + true + URL in Browser öffnen: {param_url} (mit Chrome) + {param_url} + true + com.android.chrome + com.google.android.apps.chrome.Main + Chrome + + + Informations + FHEM Info / Steuerung über AMAD Modul + true + PARALLEL + + HTTP Request: /fhem-amad/deviceInfo/, Port 8090 + + Initialisiere Variable Nächster Alarm: Variable next_alarm + Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth + Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker + Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness + Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" + Script: next_alarmday = "{next_alarm,dateformat,c}" + HTTP Response + Pause: 2s (Gerät wach halten) + Akku Ladestand: grösser als 0% + + + + + + + + + + + + + + + + SetCommands + FHEM Info / Steuerung über AMAD Modul + true + PARALLEL + + com.android.music.metachanged + HTTP Request: /fhem-amad/setCommands/*, Port 8090 + + Expression: param_screen=="off" + Expression: param_screen=="on" + Expression: request_path == "/fhem-amad/setCommands/setVolume" + Expression: request_path == "/fhem-amad/setCommands/setScreenOnOff" + Schalte Display ein: Hell für 60s + Gerät sperren + Lautstärken setzen + Expression: request_path == "/fhem-amad/setCommands/setBrightness" + Setze Alarm: um {param_hour}:{param_minute} + Expression: request_path == "/fhem-amad/setCommands/setAlarm" + Benachrichtigung auf Bildschirm: {param_message} (lange) + Expression: request_path == "/fhem-amad/setCommands/screenMsg" + URL in Browser öffnen: {param_url} (mit Chrome) + Expression: request_path == "/fhem-amad/setCommands/openURL" + Audio Player steuern: Medienknopf Stopp (Google Play Musik) + Expression: param_button == "stop" + Expression: param_button == "play" + Audio Player steuern: Medienknopf Play (Google Play Musik) + Audio Player steuern: Medienknopf Weiter (Google Play Musik) + Expression: param_button == "next" + Audio Player steuern: Medienknopf Zurück (Google Play Musik) + Expression: param_button == "back" + Expression: request_path == "/fhem-amad/setCommands/mediaPlayer" + Expression: trigger == "com.android.music.metachanged" + Sprachausgabe: {param_message} + Expression: request_path == "/fhem-amad/setCommands/ttsMsg" + Setze Systemeinstellung: System screen_brightness auf {param_brightness} + WLAN Verbunden: + HTTP Request: GET http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicTrack%20{encodeURLForm(track)} speichern in response + HTTP Request: GET http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicAlbum%20{encodeURLForm(album)} speichern in response + HTTP Request: GET http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicArtist%20{encodeURLForm(artist)} speichern in response + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/[Automagic] Flows_Alarmtime b/[Automagic] Flows_Alarmtime deleted file mode 100644 index 4c64246..0000000 --- a/[Automagic] Flows_Alarmtime +++ /dev/null @@ -1,29 +0,0 @@ - - - - true - HTTP Request: /automagic/setAlarm, Port 8089 - true - /automagic/setAlarm - 8089 - true - - - true - Setze Alarm: um {param_hour}:{param_minute} - - {param_hour} - {param_minute} - - - Alarmtime - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - Setze Alarm: um {param_hour}:{param_minute} - - HTTP Request: /automagic/setAlarm, Port 8089 - - - - \ No newline at end of file From 68b8b3f49f778aec49606690ba06a4e02fda557d Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Sun, 16 Aug 2015 21:05:03 +0200 Subject: [PATCH 08/10] =?UTF-8?q?Dokumentation=20vervollst=C3=A4ndigt,=20F?= =?UTF-8?q?lows=20f=C3=BCr=20Version=200.4.0=20vorbereitet.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 74_AMAD.pm | 58 ++++- README.md | 120 ++++++++- [Automagic] AMAD Flows v0.3.6 | 465 ---------------------------------- 3 files changed, 156 insertions(+), 487 deletions(-) delete mode 100644 [Automagic] AMAD Flows v0.3.6 diff --git a/74_AMAD.pm b/74_AMAD.pm index cdc838f..9b3244b 100644 --- a/74_AMAD.pm +++ b/74_AMAD.pm @@ -231,10 +231,10 @@ sub AMAD_RetrieveAutomagicInfoFinished($$$) # $hash->{RETRIEVECACHE} = $data; # zu Testzwecken - my @valuestring = split('@@', $data); + my @valuestring = split('@@@@', $data); my %buffer; foreach (@valuestring) { - my @values = split(' ', $_); + my @values = split('@@', $_); $buffer{$values[0]} = $values[1]; } @@ -260,13 +260,13 @@ sub AMAD_HTTP_POST($$) if ($hash->{STATE} eq "initialized") { - Log3 $name, 3, "AMAD ($name) - AMAD_HTTP_POST: set command only works if STATE active, please wait next interval run"; - return "set command only works if STATE active, please wait next interval run"; + Log3 $name, 3, "AMAD ($name) - AMAD_HTTP_POST: set command only works if STATE active, please wait for next interval run"; + return "set command only works if STATE active, please wait for next interval run"; } if ($hash->{STATE} eq "error") { - Log3 $name, 3, "AMAD ($name) - AMAD_HTTP_POST: error while send Set command. Please check IP or PORT"; - return "error while send Set command. Please check IP or PORT"; + Log3 $name, 3, "AMAD ($name) - AMAD_HTTP_POST: error while send Set command. Please check IP, PORT or wait for next interval run."; + return "error while send Set command. Please check IP, PORT or wait for next interval run."; } $hash->{STATE} = "Send HTTP POST"; @@ -355,7 +355,9 @@ sub AMAD_SelectSetCmd($$@) my $mod = join(" ", @data); my $url = "http://" . $host . ":" . $port . "/fhem-amad/setCommands/setScreenOnOff?screen=$mod"; - + + AMAD_GetUpdateLocal($hash); + Log3 $name, 4, "AMAD ($name) - Starte Update GetUpdateLocal"; return AMAD_HTTP_POST ($hash,$url); } @@ -385,6 +387,13 @@ sub AMAD_SelectSetCmd($$@) =pod +=begin html + +

      AMAD - Automagic Android Device

      +
        + At the moment no english documentation is available +
      +=end html =begin html_DE

      AMAD - Automagic Android Device

      @@ -401,8 +410,10 @@ sub AMAD_SelectSetCmd($$@)
    • Ladestatus - Netztei angeschlossen / nicht angeschlossen
    • Batteriestatus in %
    • Bildschirmhelligkeit
    • +
    • Bildschirnstatus An/Aus
    • Media Lautstärke des Lautsprechers am Gerät
    • Media Lautstärke des Bluetooth Lautsprechers
    • +
    • Zustand von Automagic auf dem Gerät


    Als Extra können noch aktueller Titel, Interpret und Album des verwendeten Mediaplayers angezeigt werden. @@ -424,7 +435,7 @@ sub AMAD_SelectSetCmd($$@)
  • eine Nachricht senden welche angesagt wird (TTS)


- Für all diese Aktionen und Informationen wird auf dem Androidgerät Automagic und ein so genannter Flow benötigt. Die App müst + Für all diese Aktionen und Informationen wird auf dem Androidgerät Automagic und ein so genannter Flow benötigt. Die App müßt Ihr Euch besorgen, die Flows bekommt Ihr von mir zusammen mit dem AMAD Modul.

Wie genau verwendet man nun AMAD? @@ -433,7 +444,7 @@ sub AMAD_SelectSetCmd($$@)
  • Installiert Euch die App "Automagic Premium" aus dem App Store oder die Testversion von hier
  • ladet Euch das AMAD Modul und die Flowfiles von GitHub runter
  • installiert die zwei Flows und aktiviert erstmal nur den "Information" Flow, eventuell bei den - FlowUpdates mal schauen ob es was neueres gibt und den entsprechenden Flow updaten oder den alten löschen und den neuen einzelnen installieren
  • + FlowUpdates mal schauen ob es was neueres gibt und den entsprechenden Flow auf dem Gerät löschen und den neuen Flow von GitHub installieren
  • kopiert die Moduldatei 74_AMAD.pm nach $FHEMPATH/FHEM. Geht auf die FHEM Frontendseite und gebt dort in der Kommandozeile reload 74_AMAD.pm ein


  • @@ -453,7 +464,7 @@ sub AMAD_SelectSetCmd($$@) sowie den, in den Flows des Trigger HTTP Request, angegebenen Port fest.
    INTERVAL ist der Zeitabstand in dem ein erneuter Informationsabruf stattfinden soll. Alle x Sekunden. Bei mir hat sich 180 gut bewährt, also alle 3 Minuten
    Bitte gebt für sofortige Erfolge als Port 8090 ein, das ist der Port der in den mitgelieferten Automagic Flows als Trigger Port eingetragen ist.
    - Dieser kann später mit Erfahrung auch geädert werden
    + Dieser kann später mit Erfahrung auch geändert werden

    Fertig! Nach anlegen des Devices sollten bereits die ersten Readings reinkommen. @@ -471,9 +482,20 @@ sub AMAD_SelectSetCmd($$@)
  • screenBrightness - Bildschirmhelligkeit von 0-255
  • volumeMusikBluetooth - Media Lautstärke von angeschlossenden Bluetooth Lautsprechern
  • volumeMusikSpeaker - Media Lautstärke der internen Lautsprecher
  • +
  • screen - Bildschirm An oderAus
  • +
  • automagicState - Statusmeldungen von der AutomagicApp

  • - Die Readings volumeMusikBluetooth und volumeMusikSpeaker spiegeln die jeweilige Medialautstärke der angeschlossenden Bluetoothlautsprechern oder der internen Lautsprecher.
    - Sofern man die jeweiligen Lautstärken ausschließlich über den Set Befehl setzt, wird eine der beiden immer mit dem defaultVolume Reading über ein stimmen. + Die Readings volumeMusikBluetooth und volumeMusikSpeaker spiegeln die jeweilige Medialautstärke der angeschlossenden Bluetoothlautsprechern oder der internen Lautsprecher wieder.
    + Sofern man die jeweiligen Lautstärken ausschließlich über den Set Befehl setzt, wird eine der beiden immer mit dem defaultVolume Reading über ein stimmen.

    + Die Readings "currentMusicAlbum", "currentMusicArtist", "currentMusicTrack" werden nicht vom Modul AMAD gesteuert, sondern ausschließlich vom Automagic Flow. Hierfür ist es notwendig + das der Flow entsprechend Deiner Netzwerkumgebung und Deines Androidgerätes angepasst wird.
    + Öffne den Flow SetCommands und folge dem Strang welcher ganz ganz links aussen lang geht. Dieser trifft auf eine Raute. Die Raute symbolisiert eine Bedingung. Es wird gefragt, + ob ein bestimmtes WLan Netz vorhanden ist. Tragt bitte hier Euren Router oder Access Point ein. Als nächstes folgt Ihr dem Strang weiter und trifft auf 3 Rechtecke.
    + In jedem der 3 Rechtecke ist ein Befehl zum setzen eines der drei Readings eingetragen. Ihr müsst lediglich in allen drein die IP Eures FHEM Servers eintragen, sowie den korrekte + DeviceNamen welchen Ihr in FHEM für dieses Androidgerät angegeben habt.

    + Das Reading automagicState muss explizit aktiviert werden. Hierfür geht Ihr in den Flow Information und dann ganz nach rechts. Dort steht eine einsame Raute (Bedingung) ohne Anbuindung + an das Rechteck mit der Pause. Drückt auf das Rechteck mit der Pause und zieht das Plus bis runter auf die Raute. Nun habt Ihr eine Verbindung. Ab der Android 5.x Version setzt Ihr + unter Einstellungen:Ton&Benachrichtigungen:Benachrichtigungszugriff ein Haken bei Automagic. Leider kann ich nicht sagen wie es sich bei Versionen der 4.xer Reihe verhält.

    @@ -488,6 +510,18 @@ sub AMAD_SelectSetCmd($$@)
  • screenBrightness - setzt die Bildschirmhelligkeit, von 0-255
  • screenMsg - versendet eine Bildschirmnachricht
  • ttsMsg - versendet eine Nachricht welche als Sprachnachricht ausgegeben wird
  • +
    + Wenn Ihr das "set screenBrightness" verwenden wollt, muss eine kleine Anpassung im Flow SetCommand vorgenommen werden. Öffnet die Aktion (eines der Vierecke ganz ganz unten) + SetzeSystemeinstellung:System und macht einen Haken bei "Ich habe die Einstellungen überprüft, ich weiss was ich tue". + +

    + + STATE +

      + Es gibt drei STATE Zustände. +
    • initialized - Ist der Status kurz nach einem define, ein Set Befehl ist hier noch nicht möglich.
    • +
    • error - beim letzten "get Information" gab es eine Fehlermeldung daher werden die Set Befehle ausgesetzt bis der nächsten "get Information" Durchlauf ohne Fehler beendet wird.
    • +
    • activ - das Modul ist im aktiven Status und "Set Befehle" können gesetzt werden.



    Anwendungsbeispiele: diff --git a/README.md b/README.md index 71dc165..dd8e7e2 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,112 @@ -# fhem-AMAD +#AMADD - Automagic Android Device -AMAD (Automagic Android Device) ist ein Perl Modul für FHEM. Das Modul stellt eine HTTP Request Anfrage an ein, mit der AutomagicAPP installierten, Android Gerät und verarbeitet die per HTTP Response Text erhaltenen Daten. -Ausserdem ist es möglich Androidgeräte damit zu steuern. Implementiert sind zur Zeit +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.90Euro kostet) funktioniert wie Tasker, ist aber bei weitem User freundlicher. Im Auslieferiungszustand werden folgende Zustände dargestellt: -- Medienlautstärke ändern -- Display an/aus -- Display Brightness einstellen -- Mediaplayer steuern (play,stop,forward,backward -- Displaxmessage senden -- TTS Message senden -- URL öffnen +- Standardlautstärke +- Status des Androidgerätes - Online/Offline +- nächste Alarmzeit +- nächster Alarmtag +- Ladestatus - Netztei angeschlossen / nicht angeschlossen +- Batteriestatus in % +- Bildschirmhelligkeit +- Bildschirnstatus An/Aus +- Media Lautstärke des Lautsprechers am Gerät +- Media Lautstärke des Bluetooth Lautsprechers +- Zustand von Automagic auf dem Gerät + + +Als Extra können noch aktueller Titel, Interpret und Album des verwendeten Mediaplayers angezeigt werden. +Mit etwas Einarbeitung können jegliche Informationen welche Automagic bereit stellt in FHEM angezeigt werden. Hierzu bedarf es lediglich einer kleinen Anpassung des "Information" Flows + +Das Modul gibt Dir auch die Möglichkeit Deine Androidgeräte zu steuern. So können folgende Aktionen durchgeführt werden. + +- Medienlautstärke regeln +- nächste Alarmzeit setzen +- Bildschirmhelligkeit einstellen +- Bildschirm An/Aus machen +- Mediaplayer steuern (Play, Stop, nächster Titel, vorheriger Titel) +- eine URL im Browser öffnen +- eine Nachricht senden welche am Bildschirm angezeigt wird +- eine Nachricht senden welche angesagt wird (TTS) + + +Für all diese Aktionen und Informationen wird auf dem Androidgerät Automagic und ein so genannter Flow benötigt. Die App müßt Ihr Euch besorgen, die Flows bekommt Ihr von mir zusammen mit dem AMAD Modul. + +Wie genau verwendet man nun AMAD? + +Installiert Euch die App "Automagic Premium" aus dem App Store oder die Testversion von hier +ladet Euch das AMAD Modul und die Flowfiles von GitHub runter +installiert die zwei Flows und aktiviert erstmal nur den "Information" Flow, eventuell bei den FlowUpdates mal schauen ob es was neueres gibt und den entsprechenden Flow auf dem Gerät löschen und den neuen Flow von GitHub installieren +kopiert die Moduldatei 74_AMAD.pm nach $FHEMPATH/FHEM. Geht auf die FHEM Frontendseite und gebt dort in der Kommandozeile reload 74_AMAD.pm ein + + +Nun müsst Ihr nur noch ein Device in FHEM anlegen. + +Define + +define AMAD + +Beispiel: + +define WandTabletWohnzimmer AMAD 192.168.0.23 8090 180 + +Diese Anweisung erstellt ein neues AMAD-Device. Die Parameter IP-ADRESSE und PORT legen die IP Adresse des Android Gerätes sowie den, in den Flows des Trigger HTTP Request, angegebenen Port fest. +INTERVAL ist der Zeitabstand in dem ein erneuter Informationsabruf stattfinden soll. Alle x Sekunden. Bei mir hat sich 180 gut bewährt, also alle 3 Minuten +Bitte gebt für sofortige Erfolge als Port 8090 ein, das ist der Port der in den mitgelieferten Automagic Flows als Trigger Port eingetragen ist. +Dieser kann später mit Erfahrung auch geändert werden + + +Fertig! Nach anlegen des Devices sollten bereits die ersten Readings reinkommen. + +Readings: + +- defaultVolume - Lautstärkewert welcher über "set defaultVolume" gesetzt wurde. +- deviceState - Status des Androidgerätes, muss selbst mit setreading gesetzt werden z.B. über die Anwesenheitskontrolle. + Ist Offline gesetzt, wird der Intervall zum Informationsabruf aus gesetzt. +- nextAlarmDay - aktiver Alarmtag +- nextAlarmTime - aktive Alarmzeit +- powerLevel - Status der Batterie in % +- powerPlugged - Netzteil angeschlossen? 0=NEIN, 2=JA +- screenBrightness - Bildschirmhelligkeit von 0-255 +- volumeMusikBluetooth - Media Lautstärke von angeschlossenden Bluetooth Lautsprechern +- volumeMusikSpeaker - Media Lautstärke der internen Lautsprecher +- screen - Bildschirm An oderAus +- automagicState - Statusmeldungen von der AutomagicApp + +Die Readings volumeMusikBluetooth und volumeMusikSpeaker spiegeln die jeweilige Medialautstärke der angeschlossenden Bluetoothlautsprechern oder der internen Lautsprecher wieder. +Sofern man die jeweiligen Lautstärken ausschließlich über den Set Befehl setzt, wird eine der beiden immer mit dem defaultVolume Reading über ein stimmen. + +Die Readings "currentMusicAlbum", "currentMusicArtist", "currentMusicTrack" werden nicht vom Modul AMAD gesteuert, sondern ausschließlich vom Automagic Flow. Hierfür ist es notwendig das der Flow entsprechend Deiner Netzwerkumgebung und Deines Androidgerätes angepasst wird. +Öffne den Flow SetCommands und folge dem Strang welcher ganz ganz links aussen lang geht. Dieser trifft auf eine Raute. Die Raute symbolisiert eine Bedingung. Es wird gefragt, ob ein bestimmtes WLan Netz vorhanden ist. Tragt bitte hier Euren Router oder Access Point ein. Als nächstes folgt Ihr dem Strang weiter und trifft auf 3 Rechtecke. +In jedem der 3 Rechtecke ist ein Befehl zum setzen eines der drei Readings eingetragen. Ihr müsst lediglich in allen drein die IP Eures FHEM Servers eintragen, sowie den korrekte DeviceNamen welchen Ihr in FHEM für dieses Androidgerät angegeben habt. + +Das Reading automagicState muss explizit aktiviert werden. Hierfür geht Ihr in den Flow Information und dann ganz nach rechts. Dort steht eine einsame Raute (Bedingung) ohne Anbuindung an das Rechteck mit der Pause. Drückt auf das Rechteck mit der Pause und zieht das Plus bis runter auf die Raute. Nun habt Ihr eine Verbindung. Ab der Android 5.x Version setzt Ihr unter Einstellungen:Ton&Benachrichtigungen:Benachrichtigungszugriff ein Haken bei Automagic. Leider kann ich nicht sagen wie es sich bei Versionen der 4.xer Reihe verhält. + + +Set: + +- defaultVolume - setzt die Medialautstärke. Entweder die internen Lautsprecher oder sofern angeschlossen die Bluetoothlautsprecher +- deviceState - setzt den Device Status Online/Offline. Siehe Readings +- mediaPlayer - steuert den Standard Mediaplayer. play, stop, Titel zürück, Titel vor. +- nextAlarmTime - setzt die Alarmzeit. Geht aber nur innerhalb der nächsten 24Std. +- openURL - öffnet eine URL im Standardbrowser +- screen - setzt den Bildschirm auf AN oder AUS mit Sperre +- screenBrightness - setzt die Bildschirmhelligkeit, von 0-255 +- screenMsg - versendet eine Bildschirmnachricht +- ttsMsg - versendet eine Nachricht welche als Sprachnachricht ausgegeben wird + +Wenn Ihr das "set screenBrightness" verwenden wollt, muss eine kleine Anpassung im Flow SetCommand vorgenommen werden. Öffnet die Aktion (eines der Vierecke ganz ganz unten) SetzeSystemeinstellung:System und macht einen Haken bei "Ich habe die Einstellungen überprüft, ich weiss was ich tue". + + + +Anwendungsbeispiele: + +Ich habe die Ladegeräte für meine Androidgeräte an Funkschaltsteckdosen. ein DOIF schaltet bei unter 30% die Steckdose ein und bei über 90% wieder aus. Morgens lasse ich mich über mein Tablet im Schlafzimmer mit Musik wecken. Verwendet wird hierzu der wakeuptimer des RESIDENTS Modules. Das abspielen stoppe ich dann von Hand. Danach erfolgt noch eine Ansage wie das Wetter gerade ist und wird. +Mein 10" Tablet im Wohnzimmer ist Mediaplayer für das Wohnzimmer mit Bluetoothlautsprechern. Die Lautstärke wird automatisch runter gesetzt wenn die Fritzbox einen Anruf auf das Wohnzimmer Handgerät signalisiert. + + + +Und zu guter letzt möchte ich mich noch bedanken. +Der größte Dank geht an meinen Mentor Andre (justme1968), er hat mir mit hilfreichen Tips geholfen Perlcode zu verstehen und Spaß am programmieren zu haben. +Auch möchte ich mich bei Jens bedanken (jensb) welcher mir ebenfalls mit hilfreichen Tips bei meinen aller ersten Gehversuchen beim Perlcode schreiben unterstützt hat. +So und nun noch ein besonderer Dank an pah (Prof. Dr. Peter Henning ), ohne seine Aussage "Keine Ahnung hatten wir alle mal, das ist keine Ausrede" hätte ich bestimmt nicht angefangen Interesse an Modulentwicklung zu zeigen :-) diff --git a/[Automagic] AMAD Flows v0.3.6 b/[Automagic] AMAD Flows v0.3.6 deleted file mode 100644 index 4880c10..0000000 --- a/[Automagic] AMAD Flows v0.3.6 +++ /dev/null @@ -1,465 +0,0 @@ - - - - false - com.android.music.metachanged - true - com.android.music.metachanged - - - - - - - - artist = getString("artist"); -track = getString("track"); -album = getString("album"); - false - - - true - HTTP Request: /fhem-amad/deviceInfo/, Port 8090 - true - /fhem-amad/deviceInfo/ - 8090 - true - - - true - HTTP Request: /fhem-amad/setCommands/*, Port 8090 - true - /fhem-amad/setCommands/* - 8090 - true - - - true - Akku Ladestand: grösser als 0% - 0 - HIGHER_THAN - - - true - Expression: param_button == "back" - param_button == "back" - - - true - Expression: param_button == "next" - param_button == "next" - - - true - Expression: param_button == "play" - param_button == "play" - - - true - Expression: param_button == "stop" - param_button == "stop" - - - true - Expression: param_screen=="off" - param_screen=="off" - - - true - Expression: param_screen=="on" - param_screen=="on" - - - true - Expression: request_path == "/fhem-amad/setCommands/mediaPlayer" - request_path == "/fhem-amad/setCommands/mediaPlayer" - - - true - Expression: request_path == "/fhem-amad/setCommands/openURL" - request_path == "/fhem-amad/setCommands/openURL" - - - true - Expression: request_path == "/fhem-amad/setCommands/screenMsg" - request_path == "/fhem-amad/setCommands/screenMsg" - - - true - Expression: request_path == "/fhem-amad/setCommands/setAlarm" - request_path == "/fhem-amad/setCommands/setAlarm" - - - true - Expression: request_path == "/fhem-amad/setCommands/setBrightness" - request_path == "/fhem-amad/setCommands/setBrightness" - - - true - Expression: request_path == "/fhem-amad/setCommands/setScreenOnOff" - request_path == "/fhem-amad/setCommands/setScreenOnOff" - - - true - Expression: request_path == "/fhem-amad/setCommands/setVolume" - request_path == "/fhem-amad/setCommands/setVolume" - - - true - Expression: request_path == "/fhem-amad/setCommands/ttsMsg" - request_path == "/fhem-amad/setCommands/ttsMsg" - - - true - Expression: trigger == "com.android.music.metachanged" - trigger == "com.android.music.metachanged" - - - true - WLAN Verbunden: - false - - - - true - Audio Player steuern: Medienknopf Play (Google Play Musik) - true - LAUNCH - KEYCODE_MEDIA_PLAY - true - com.google.android.music - com.google.android.music.playback.MediaButtonIntentReceiver - Google Play Musik - - - true - Audio Player steuern: Medienknopf Stopp (Google Play Musik) - true - LAUNCH - KEYCODE_MEDIA_STOP - true - com.google.android.music - com.google.android.music.playback.MediaButtonIntentReceiver - Google Play Musik - - - true - Audio Player steuern: Medienknopf Weiter (Google Play Musik) - true - LAUNCH - KEYCODE_MEDIA_NEXT - true - com.google.android.music - com.google.android.music.playback.MediaButtonIntentReceiver - Google Play Musik - - - true - Audio Player steuern: Medienknopf Zurück (Google Play Musik) - true - LAUNCH - KEYCODE_MEDIA_PREVIOUS - true - com.google.android.music - com.google.android.music.playback.MediaButtonIntentReceiver - Google Play Musik - - - true - Benachrichtigung auf Bildschirm: {param_message} (lange) - true - {param_message} - - 200 - 250 - false - 1.0 - true - false - TOP_LEFT - 0 - 0 - - - true - Gerät sperren - - - true - HTTP Request: GET http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicAlbum%20{encodeURLForm(album)} speichern in response - http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicAlbum%20{encodeURLForm(album)} - true - false - - GET - X_WWW_FORM_URLENCODED - text/plain - - Lastname=XYZ,Firstname=ABC - 60000 - false - - true - response - /storage/emulated/0/Download/file.bin - - - true - HTTP Request: GET http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicArtist%20{encodeURLForm(artist)} speichern in response - http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicArtist%20{encodeURLForm(artist)} - true - false - - GET - X_WWW_FORM_URLENCODED - text/plain - - Lastname=XYZ,Firstname=ABC - 60000 - false - - true - response - /storage/emulated/0/Download/file.bin - - - true - HTTP Request: GET http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicTrack%20{encodeURLForm(track)} speichern in response - http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicTrack%20{encodeURLForm(track)} - true - false - - GET - X_WWW_FORM_URLENCODED - text/plain - - Lastname=XYZ,Firstname=ABC - 60000 - false - - true - response - /storage/emulated/0/Download/file.bin - - - false - HTTP Response - powerLevel {battery_percentage}@@powerPlugged {battery_plugged}@@volumeMusikBluetooth {volumeMusikBluetooth}@@volumeMusikSpeaker {volumeMusikSpeaker}@@screenBrightness {screenBrightness}@@nextAlarmTime {next_alarmtime}@@nextAlarmDay {next_alarmday} - true - text/html - - - true - Initialisiere Variable Nächster Alarm: Variable next_alarm - next_alarm - - - true - Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness - SYSTEM - screen_brightness - screenBrightness - - - true - Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth - SYSTEM - volume_music_bt_a2dp - volumeMusikBluetooth - - - true - Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker - SYSTEM - volume_music_speaker - volumeMusikSpeaker - - - false - Lautstärken setzen - false - global_volume_alarm - false - global_volume_dtmf - true - param_volume - false - global_volume_notification - false - global_volume_ring - false - global_volume_system - false - global_volume_voice_call - false - global_ringer_mode - false - global_interruptions_mode - - - true - Pause: 2s (Gerät wach halten) - 2s - true - - - true - Schalte Display ein: Hell für 60s - true - 60s - true - - - true - Script: next_alarmday = "{next_alarm,dateformat,c}" - - - - true - Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" - - - - true - Setze Alarm: um {param_hour}:{param_minute} - - {param_hour} - {param_minute} - - - true - Setze Systemeinstellung: System screen_brightness auf {param_brightness} - SYSTEM - screen_brightness - {param_brightness} - true - - - true - Sprachausgabe: {param_message} - MUSIC - {param_message} - de_DE - true - 1.0 - true - 1.0 - false - false - false - false - TRANSIENT - - - true - URL in Browser öffnen: {param_url} (mit Chrome) - {param_url} - true - com.android.chrome - com.google.android.apps.chrome.Main - Chrome - - - Informations - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - HTTP Request: /fhem-amad/deviceInfo/, Port 8090 - - Initialisiere Variable Nächster Alarm: Variable next_alarm - Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth - Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker - Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness - Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" - Script: next_alarmday = "{next_alarm,dateformat,c}" - HTTP Response - Pause: 2s (Gerät wach halten) - Akku Ladestand: grösser als 0% - - - - - - - - - - - - - - - - SetCommands - FHEM Info / Steuerung über AMAD Modul - true - PARALLEL - - com.android.music.metachanged - HTTP Request: /fhem-amad/setCommands/*, Port 8090 - - Expression: param_screen=="off" - Expression: param_screen=="on" - Expression: request_path == "/fhem-amad/setCommands/setVolume" - Expression: request_path == "/fhem-amad/setCommands/setScreenOnOff" - Schalte Display ein: Hell für 60s - Gerät sperren - Lautstärken setzen - Expression: request_path == "/fhem-amad/setCommands/setBrightness" - Setze Alarm: um {param_hour}:{param_minute} - Expression: request_path == "/fhem-amad/setCommands/setAlarm" - Benachrichtigung auf Bildschirm: {param_message} (lange) - Expression: request_path == "/fhem-amad/setCommands/screenMsg" - URL in Browser öffnen: {param_url} (mit Chrome) - Expression: request_path == "/fhem-amad/setCommands/openURL" - Audio Player steuern: Medienknopf Stopp (Google Play Musik) - Expression: param_button == "stop" - Expression: param_button == "play" - Audio Player steuern: Medienknopf Play (Google Play Musik) - Audio Player steuern: Medienknopf Weiter (Google Play Musik) - Expression: param_button == "next" - Audio Player steuern: Medienknopf Zurück (Google Play Musik) - Expression: param_button == "back" - Expression: request_path == "/fhem-amad/setCommands/mediaPlayer" - Expression: trigger == "com.android.music.metachanged" - Sprachausgabe: {param_message} - Expression: request_path == "/fhem-amad/setCommands/ttsMsg" - Setze Systemeinstellung: System screen_brightness auf {param_brightness} - WLAN Verbunden: - HTTP Request: GET http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicTrack%20{encodeURLForm(track)} speichern in response - HTTP Request: GET http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicAlbum%20{encodeURLForm(album)} speichern in response - HTTP Request: GET http://FHEM-IP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicArtist%20{encodeURLForm(artist)} speichern in response - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 6075963f2196036ef3f872178a8390d58e7a90ee Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Sun, 16 Aug 2015 21:05:48 +0200 Subject: [PATCH 09/10] Aktuelle Flowsversion --- Automagic_FHEM-AMAD_Flows_v0.3.7.xml | 501 +++++++++++++++++++++++++++ 1 file changed, 501 insertions(+) create mode 100644 Automagic_FHEM-AMAD_Flows_v0.3.7.xml diff --git a/Automagic_FHEM-AMAD_Flows_v0.3.7.xml b/Automagic_FHEM-AMAD_Flows_v0.3.7.xml new file mode 100644 index 0000000..16a62c9 --- /dev/null +++ b/Automagic_FHEM-AMAD_Flows_v0.3.7.xml @@ -0,0 +1,501 @@ + + + + false + com.android.music.metachanged + true + com.android.music.metachanged + + + + + + + + artist = getString("artist"); +track = getString("track"); +album = getString("album"); + false + + + true + HTTP Request: /fhem-amad/deviceInfo/, Port 8090 + true + /fhem-amad/deviceInfo/ + 8090 + true + + + true + HTTP Request: /fhem-amad/setCommands/*, Port 8090 + true + /fhem-amad/setCommands/* + 8090 + true + + + true + Akku Ladestand: grösser als 0% + 0 + HIGHER_THAN + + + true + Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic + ch.gridvision.ppam.androidautomagic + TEXT + CONTAINS_TEXT + + false + false + + + true + Display eingeschaltet + + + true + Expression: param_button == "back" + param_button == "back" + + + true + Expression: param_button == "next" + param_button == "next" + + + true + Expression: param_button == "play" + param_button == "play" + + + true + Expression: param_button == "stop" + param_button == "stop" + + + true + Expression: param_screen=="off" + param_screen=="off" + + + true + Expression: param_screen=="on" + param_screen=="on" + + + true + Expression: request_path == "/fhem-amad/setCommands/mediaPlayer" + request_path == "/fhem-amad/setCommands/mediaPlayer" + + + true + Expression: request_path == "/fhem-amad/setCommands/openURL" + request_path == "/fhem-amad/setCommands/openURL" + + + true + Expression: request_path == "/fhem-amad/setCommands/screenMsg" + request_path == "/fhem-amad/setCommands/screenMsg" + + + true + Expression: request_path == "/fhem-amad/setCommands/setAlarm" + request_path == "/fhem-amad/setCommands/setAlarm" + + + true + Expression: request_path == "/fhem-amad/setCommands/setBrightness" + request_path == "/fhem-amad/setCommands/setBrightness" + + + true + Expression: request_path == "/fhem-amad/setCommands/setScreenOnOff" + request_path == "/fhem-amad/setCommands/setScreenOnOff" + + + true + Expression: request_path == "/fhem-amad/setCommands/setVolume" + request_path == "/fhem-amad/setCommands/setVolume" + + + true + Expression: request_path == "/fhem-amad/setCommands/ttsMsg" + request_path == "/fhem-amad/setCommands/ttsMsg" + + + true + Expression: trigger == "com.android.music.metachanged" + trigger == "com.android.music.metachanged" + + + true + WLAN Verbunden: + false + + + + true + Audio Player steuern: Medienknopf Play (Google Play Musik) + true + LAUNCH + KEYCODE_MEDIA_PLAY + true + com.google.android.music + com.google.android.music.playback.MediaButtonIntentReceiver + Google Play Musik + + + true + Audio Player steuern: Medienknopf Stopp (Google Play Musik) + true + LAUNCH + KEYCODE_MEDIA_STOP + true + com.google.android.music + com.google.android.music.playback.MediaButtonIntentReceiver + Google Play Musik + + + true + Audio Player steuern: Medienknopf Weiter (Google Play Musik) + true + LAUNCH + KEYCODE_MEDIA_NEXT + true + com.google.android.music + com.google.android.music.playback.MediaButtonIntentReceiver + Google Play Musik + + + true + Audio Player steuern: Medienknopf Zurück (Google Play Musik) + true + LAUNCH + KEYCODE_MEDIA_PREVIOUS + true + com.google.android.music + com.google.android.music.playback.MediaButtonIntentReceiver + Google Play Musik + + + true + Benachrichtigung auf Bildschirm: {param_message} (lange) + true + {param_message} + + 200 + 250 + false + 1.0 + true + false + TOP_LEFT + 0 + 0 + + + true + Gerät sperren + + + true + HTTP Request: GET http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicAlbum%20{encodeURLForm(album)} speichern in response + http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicAlbum%20{encodeURLForm(album)} + true + false + + GET + X_WWW_FORM_URLENCODED + text/plain + + Lastname=XYZ,Firstname=ABC + 60000 + false + + true + response + /storage/emulated/0/Download/file.bin + + + true + HTTP Request: GET http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicArtist%20{encodeURLForm(artist)} speichern in response + http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicArtist%20{encodeURLForm(artist)} + true + false + + GET + X_WWW_FORM_URLENCODED + text/plain + + Lastname=XYZ,Firstname=ABC + 60000 + false + + true + response + /storage/emulated/0/Download/file.bin + + + true + HTTP Request: GET http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicTrack%20{encodeURLForm(track)} speichern in response + http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicTrack%20{encodeURLForm(track)} + true + false + + GET + X_WWW_FORM_URLENCODED + text/plain + + Lastname=XYZ,Firstname=ABC + 60000 + false + + true + response + /storage/emulated/0/Download/file.bin + + + false + HTTP Response + powerLevel@@{battery_percentage}@@@@powerPlugged@@{battery_plugged}@@@@volumeMusikBluetooth@@{volumeMusikBluetooth}@@@@volumeMusikSpeaker@@{volumeMusikSpeaker}@@@@screenBrightness@@{screenBrightness}@@@@nextAlarmTime@@{next_alarmtime}@@@@nextAlarmDay@@{next_alarmday}@@@@screen@@{screen_state}@@@@automagicState@@{notification_text} + true + text/plain + + + true + Initialisiere Variable Nächster Alarm: Variable next_alarm + next_alarm + + + true + Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness + SYSTEM + screen_brightness + screenBrightness + + + true + Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth + SYSTEM + volume_music_bt_a2dp + volumeMusikBluetooth + + + true + Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker + SYSTEM + volume_music_speaker + volumeMusikSpeaker + + + false + Lautstärken setzen + false + global_volume_alarm + false + global_volume_dtmf + true + param_volume + false + global_volume_notification + false + global_volume_ring + false + global_volume_system + false + global_volume_voice_call + false + global_ringer_mode + false + global_interruptions_mode + + + true + Pause: 2s (Gerät wach halten) + 2s + true + + + true + Schalte Display ein: Hell für 60s + true + 60s + true + + + true + Script: next_alarmday = "{next_alarm,dateformat,c}" + + + + true + Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" + + + + true + Script: screen_state = "off" + + + + true + Script: screen_state = "on" + + + + true + Setze Alarm: um {param_hour}:{param_minute} + + {param_hour} + {param_minute} + + + true + Setze Systemeinstellung: System screen_brightness auf {param_brightness} + SYSTEM + screen_brightness + {param_brightness} + true + + + true + Sprachausgabe: {param_message} + MUSIC + {param_message} + de_DE + true + 1.0 + true + 1.0 + false + false + false + false + TRANSIENT + + + true + URL in Browser öffnen: {param_url} (mit Chrome) + {param_url} + true + com.android.chrome + com.google.android.apps.chrome.Main + Chrome + + + Informations + FHEM Info / Steuerung über AMAD Modul + true + QUEUE + 120 + + HTTP Request: /fhem-amad/deviceInfo/, Port 8090 + + Initialisiere Variable Nächster Alarm: Variable next_alarm + Initialisiere Variable Systemeinstellung: System volume_music_bt_a2dp to volumeMusikBluetooth + Initialisiere Variable Systemeinstellung: System volume_music_speaker to volumeMusikSpeaker + Initialisiere Variable Systemeinstellung: System screen_brightness to screenBrightness + Script: next_alarmtime = "{next_alarm,dateformat,HH:mm}" + Script: next_alarmday = "{next_alarm,dateformat,c}" + Display eingeschaltet + Script: screen_state = "on" + Script: screen_state = "off" + Pause: 2s (Gerät wach halten) + Akku Ladestand: grösser als 0% + Benachrichtigung in Statusbar angezeigt: ch.gridvision.ppam.androidautomagic + HTTP Response + + + + + + + + + + + + + + + + + + + + + + SetCommands + FHEM Info / Steuerung über AMAD Modul + true + QUEUE + 120 + + com.android.music.metachanged + HTTP Request: /fhem-amad/setCommands/*, Port 8090 + + Expression: param_screen=="off" + Expression: param_screen=="on" + Expression: request_path == "/fhem-amad/setCommands/setVolume" + Expression: request_path == "/fhem-amad/setCommands/setScreenOnOff" + Schalte Display ein: Hell für 60s + Gerät sperren + Lautstärken setzen + Expression: request_path == "/fhem-amad/setCommands/setBrightness" + Setze Alarm: um {param_hour}:{param_minute} + Expression: request_path == "/fhem-amad/setCommands/setAlarm" + Benachrichtigung auf Bildschirm: {param_message} (lange) + Expression: request_path == "/fhem-amad/setCommands/screenMsg" + URL in Browser öffnen: {param_url} (mit Chrome) + Expression: request_path == "/fhem-amad/setCommands/openURL" + Audio Player steuern: Medienknopf Stopp (Google Play Musik) + Expression: param_button == "stop" + Expression: param_button == "play" + Audio Player steuern: Medienknopf Play (Google Play Musik) + Audio Player steuern: Medienknopf Weiter (Google Play Musik) + Expression: param_button == "next" + Audio Player steuern: Medienknopf Zurück (Google Play Musik) + Expression: param_button == "back" + Expression: request_path == "/fhem-amad/setCommands/mediaPlayer" + Expression: trigger == "com.android.music.metachanged" + Sprachausgabe: {param_message} + Expression: request_path == "/fhem-amad/setCommands/ttsMsg" + Setze Systemeinstellung: System screen_brightness auf {param_brightness} + WLAN Verbunden: + HTTP Request: GET http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicTrack%20{encodeURLForm(track)} speichern in response + HTTP Request: GET http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicAlbum%20{encodeURLForm(album)} speichern in response + HTTP Request: GET http://FHEMSERVERIP:8085/fhem?cmd=setreading%20FHEMDEVICENAME%20currentMusicArtist%20{encodeURLForm(artist)} speichern in response + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From a58aa9c79b7f69fc26de283200676189a0b659a7 Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Sun, 16 Aug 2015 21:26:02 +0200 Subject: [PATCH 10/10] Anpassung der README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dd8e7e2..1bd6242 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Nun müsst Ihr nur noch ein Device in FHEM anlegen. Define -define AMAD +define name AMAD ip-adresse port interval Beispiel: @@ -107,6 +107,9 @@ Mein 10" Tablet im Wohnzimmer ist Mediaplayer für das Wohnzimmer mit Bluetoothl Und zu guter letzt möchte ich mich noch bedanken. + Der größte Dank geht an meinen Mentor Andre (justme1968), er hat mir mit hilfreichen Tips geholfen Perlcode zu verstehen und Spaß am programmieren zu haben. + Auch möchte ich mich bei Jens bedanken (jensb) welcher mir ebenfalls mit hilfreichen Tips bei meinen aller ersten Gehversuchen beim Perlcode schreiben unterstützt hat. + So und nun noch ein besonderer Dank an pah (Prof. Dr. Peter Henning ), ohne seine Aussage "Keine Ahnung hatten wir alle mal, das ist keine Ausrede" hätte ich bestimmt nicht angefangen Interesse an Modulentwicklung zu zeigen :-)