alexa-fhem: amazon alexa smart home skill für fhem

Begonnen von justme1968, 05 November 2016, 23:21:32

Vorheriges Thema - Nächstes Thema

Benni

Zitat von: michael.winkler am 23 März 2017, 10:29:27
Ist es möglich dass wenn ich z.B. "Alexa sage XYZ Hundefutter" und der entsprechende Custom Skill "XYZ"...

Das hier ist übrigens der Thread für den Smarthome Skill!

Und das von dir gewünschte geht derzeit leider nicht, auch nicht im Custom-Skill.

oehi86

Hallo fhem-Kollegen,

ich habe Alexa eingerichtet und bin begeistert...sie tut das was sie soll  8)

ABER: Nach einer Weile fliegt der Dienst weg mit folgender Error-Meldung:

[2017-03-23 22:09:48] { FHEMgutenMorgenIntent: 'gutenMorgen',
  FHEMguteNachtIntent: 'guteNacht' }
/home/philipp/alexa-fhem/lib/server.js:135
      if (err) throw err;
               ^

Error: "vers" must be 0. Got: 2
    at Client.onmessage (/home/philipp/alexa-fhem/node_modules/nat-pmp/index.js:301:8)
    at Socket.<anonymous> (/home/philipp/alexa-fhem/node_modules/nat-pmp/index.js:367:32)
    at emitTwo (events.js:87:13)
    at Socket.emit (events.js:172:7)
    at UDP.onMessage (dgram.js:506:8)

Was kann man da machen?

Esjay

Zitat von: oehi86 am 24 März 2017, 13:14:35
Hallo fhem-Kollegen,

ich habe Alexa eingerichtet und bin begeistert...sie tut das was sie soll  8)

ABER: Nach einer Weile fliegt der Dienst weg mit folgender Error-Meldung:

[2017-03-23 22:09:48] { FHEMgutenMorgenIntent: 'gutenMorgen',
  FHEMguteNachtIntent: 'guteNacht' }
/home/philipp/alexa-fhem/lib/server.js:135
      if (err) throw err;
               ^

Error: "vers" must be 0. Got: 2
    at Client.onmessage (/home/philipp/alexa-fhem/node_modules/nat-pmp/index.js:301:8)
    at Socket.<anonymous> (/home/philipp/alexa-fhem/node_modules/nat-pmp/index.js:367:32)
    at emitTwo (events.js:87:13)
    at Socket.emit (events.js:172:7)
    at UDP.onMessage (dgram.js:506:8)

Was kann man da machen?

Code Tags wären ein Anfang  ;)

Ansonsten mach mal ein list von deinem Alexa Device!

oehi86

Internals:
   NAME       MyAlexa
   NR         282
   STATE      active
   TYPE       alexa
   active     0
   alexa-fhem version 0.3.0
Attributes:
   alexaMapping #Characteristic=<name>=<value>,...
On=verb=schalte,valueOn=an;ein,valueOff=aus,valueToggle=um

Brightness=verb=stelle,property=helligkeit,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent

Hue=verb=stelle,valuePrefix=auf,values=rot:0;grün:128;blau:200
Hue=verb=färbe,values=rot:0;grün:120;blau:220

Saturation=verb=stelle,property=sättigung,valuePrefix=auf,values=AMAZON.NUMBER
Saturation=verb=sättige,values=AMAZON.NUMBER

TargetPosition=verb=mach,articles=den;die,values=auf:100;zu:0
TargetPosition=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent

TargetTemperature=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=grad

Volume:verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent

#Weckzeit=verb=stelle,valuePrefix=auf;für,values=AMAZON.TIME,valueSuffix=uhr
   alexaTypes #Type=<alias>[,<alias2>[,...]]
light=licht,lampen
blind=rolladen,rolläden,jalousie,jalousien,rollo,rollos
   fhemIntents #IntentName=<sample utterance>
gutenMorgen=guten morgen
guteNacht=gute nacht
   room       System


elmer

Ich starte eine Activity mit einem readingsProxy, das hat jetzt ca. 2 Wochen lang funtioniert. Seit gestern ganz plötzlich, ohne das etwas geändert wurde, schaltet Alexa nicht mehr ein, sie sagt das kein Mediaplayer vorhanden ist, oder sagt ok und macht nichts.

Komisch ist, das wenn ich sage, schalte Mediaplayer aus, dann macht sie das auch.

alexaName      Mediaplayer

alexaRoom             Wohnzimmer

devStateIcon          on:control_on_off@green off:control_standby

event-on-change-reading   .*

genericDeviceType      switch

icon     rc_MEDIAMENU

room     alexa,harmony

setFn       { return 'activity Harmony_Hub' if( $CMD eq 'on' );; return 'off';; }

setList    on off

valueFn     { return 'on' if( $VALUE eq 'Harmony_Hub' );; return 'off';; }

elmer

#2421
Jetzt geht bald der Sommer an und ich muß noch mal über mein unerklärliches Problem schreiben.

Ich habe 2 Rollo von Rademacher ( Duofern ) und eine Markise mit 2 Motoren, der eine Motor ist ein IO und der andere ein RTS.

In Fehm wenn ich diese 4 Geräte schalte funtioniert alles wunderbar, wenn ich ein Gerät auf 20 Prozent stelle geht es auf 20 Prozent, wenn ich zu klicke geht es zu, wenn ich auf klicke geht es auf auf usw.....

Wenn ich das ganze nun von Alexa bedienen lasse ist die Steuerung nur noch von der Markise richtig.

Bei den Rollos kann ich mit dem Custom Skill sagen das Sie die Rollos auf oder zu machen soll, das funktioniert auch, wenn ich jetzt aber sage stelle Rollo auf 10 Prozent stellt Sie diesen auf 90 Prozent.

In Fehm ist ja alles richtig, ich habe die Werte bei Alexa auch schon mal gedreht, also 0 auf 100 und 100 auf 0, leider ohne Erfolg.

Wer kann mir den entscheidenden Tipp geben damit das ganze auch richtig mit Alexa zu steuern geht, das muß doch gehen.

blasterx

@ elmer,
das hatte ich auch. Ich habe die Polung an dem Schalter getauscht und dann ging alles ohne Probleme.

Gruß BlasterX
Gruß-BlasterX

mike1969bln

@elmer

Probier mal das Attribut:
homebridgeMapping     CurrentPosition=invert=1 TargetPosition=invert=1,minStep=10

elmer

Leider zeigt das homebridgeMapping keine änderung, die Teile fahren immer noch die falsche Position an.

Die Polung kann ich nicht ändern da es Gurtwickler sind.

eddi79

Hallo zusammen,
die Installsation von Alexa FHEM hat super geklappt. Steuerung per Sprache ebenfalls. Allerdings bekomme ich das Startscript in der init.d einfach nicht hin, so dass ich Alexa FHEM immer per Putty manuell starten muss (und das Fenster offen lasse ;-) ). --> Keine Lösung so.
Vielleicht kann jemand mal drüber sehen was ich falsch mache.

Meines sieht derzeit so aus:
#!/bin/sh
### BEGIN INIT INFO
# Provides: alexa
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time for alexa
# Description: Enable service provided by daemon.
### END INIT INFO
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
PID=`pidof alexa`
export ALEXAPATH="/home/pi/alexa-fhem"
export LOGPATH="/home/pi/alexa-fhem/log"
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
    echo "Alexa is already running"
else
    $ALEXAPATH/bin/alexa > $LOGPATH/alexa-`date +%Y-%m`.log 2>&1 &
    echo "Alexa starting"
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is not running"
else
        kill $PID
        echo "Alexa closed"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
        $0 start
else
        $0 stop
        $0 start
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is running PID $PID"
else
        echo "Alexa is not running"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0

Wenn ich es mit "sudo service alexa start" aufrufe erhalte ich Folgendes:
"Job for alexa.service failed. See 'systemctl status alexa.service' and 'journalctl -xn' for details."
bzw im systemctl:
● alexa.service - LSB: Start daemon at boot time for alexa
   Loaded: loaded (/etc/init.d/alexa)
   Active: failed (Result: exit-code) since Sun 2017-03-26 21:11:41 CEST; 21s ago
  Process: 1424 ExecStart=/etc/init.d/alexa start (code=exited, status=203/EXEC)


Ich weiß einfach nicht was ich falsch mache...

Vielleicht hat jemand einen Tipp. Ist vermutlich was kleines - aber ich min zu doof dafür :-(.

Danke
Markus

MadMax-FHEM

#2426
Für derartige Probleme gibt es den "Problem-Thread":

https://forum.fhem.de/index.php/topic,60452.0.html

Was ich schon mal sehe: du hast das Starten im Script abgeändert, also keinen User angegeben...

Wenn du es per putty startest mit welchem User?

Wo liegt die config.json?

EDIT: gibt es den Log-Pfad (/home/pi/alexa-fhem/log)? Wird die Logdatei geschrieben? Was steht drin?

Und bitte: code-Tags verwenden (das # im Menü)...

Und wie geschrieben: weiter im Problem-Thread...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

fhemfreund

#2427
Zitat von: Master_Nick am 20 Februar 2017, 11:32:27
So ich habe mir die Geschichte mit dem Batteriewert in der server.js mal angesehen.

Aus meiner Sicht lag hier die Fehlerquelle bei dem Teil:

            if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'der Batteriestand ist '+ (device.fhem.cached(device.mappings.StatusLowBattery.informId)?'niedrig':'in ordnung');


Wenn ich das richtig verstehe, ist das eine Abfrage auf "Variable gesetzt/vorhanden true or false", da sie immer gefüllt ist, wird immer niedrig ausgegeben. ;)

Ich habe das nun so geändert, getestet und es funktioniert:


          if( device.mappings.BatteryLevel ) {
            if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'der Batteriestand ist '+ device.fhem.cached(device.mappings.BatteryLevel.informId).replace('.',',');
          } else if( device.mappings.StatusLowBattery ) {
            if( device.fhem.cached(device.mappings.StatusLowBattery.informId) == 'ok'  ) {
            if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'der Batteriestand ist in ordnung';
           }
            else if( device.fhem.cached(device.mappings.StatusLowBattery.informId) == 'low'  ) {
            if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'der Batteriestand ist niedrig';
           }

          }


Eventuell macht es noch Sinn, dass if mit oder zu ergänzen um auch Zahlen abgefrühstückt zu haben:

          if( device.mappings.BatteryLevel ) {
            if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'der Batteriestand ist '+ device.fhem.cached(device.mappings.BatteryLevel.informId).replace('.',',');
          } else if( device.mappings.StatusLowBattery ) {
            if(( device.fhem.cached(device.mappings.StatusLowBattery.informId) == 'ok'  ) || (device.fhem.cached(device.mappings.StatusLowBattery.informId) == '1'))  {
            if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'der Batteriestand ist in ordnung';
           }
            else if(( device.fhem.cached(device.mappings.StatusLowBattery.informId) == 'low'  ) || ( device.fhem.cached(device.mappings.StatusLowBattery.informId) == '0'  )) {
            if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'der Batteriestand ist niedrig';
           }

          }


... hatte genau das gleiche Problem mit meinen LaCrosse Sensoren - nach deiner Anleitung funktioniert das bei mir auch jetzt 1a. Habe das für Luftfeuchte + Batterie angepasst. Wenn man erstmal weiß wo man hinschauen muss - geht auf einmal viel mehr :-)

Andreas

fhemfreund

Bin gerade dabei einen LED Lichtstreifen via Alexa zu steuern. Kann ihn soweit ein/ausschalten - sprich die Steuerung geht grundlegend.
Allerdings habe ich beim Einstellen der Farbe Probleme. Konnte den Fehler soweit eingrenzen, weiß allerdings nicht wie ich ihn beheben kann:

Laut Alexa Log wird ausgeführt:

http://127.0.0.1:8083/fhem?cmd=set%20LEDStripePreset%20%20%20RGB%20FF0000,0,0&XHR=1


Es sollte aber ausgeführt werden:

http://127.0.0.1:8083/fhem?cmd=set%20LEDStripePreset%20%20%20RGB%20FF0000&XHR=1


Mein Alexa Mapping ist:

Hue=verb=färbe,articles=das,values=rot:RGB+FF0000;grün:RGB+00FF00;blau:RGB+0000FF


Mein HomeBridgeMapping ist:

Hue=cmd=+


Es sieht so aus, als ob eine Color-Conversion der Art <x,y,z> durchgeführt wird, die so für meinen Fall nicht funktioniert
Weiß jemand, wie man das steuern/ändern kann?

Andreas

Bernd Maurer

Hallo, wie mache ich ein Alexa-Update, habe nur die Version: wget http://files.haus-automatisierung.com/alexa-fhem-0.1.9.tgz
Wo / wie bekomme ich die 0.3.0?