Einladung zum Beta-Test: "FHEMlazy" zur einfacheren Alexa-Integration

Begonnen von gvzdus, 23 Dezember 2018, 15:30:36

Vorheriges Thema - Nächstes Thema

Bischemer

das hatte ich kontrolliert. Ich dachte > 8 wäre ok
Zitatpi@raspberrypi:~ $ node --version
    v8.9.0

justme1968

sorry. hatte ich übersehen. war noch zu früh.

ja sollte gehen. schau ins angegebene log.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

AlexBV

Erstmal vielen Dank für das tolle Modul. Es erleichtert die Alexa-Anbindung ganz erheblich!
Die Einrichtung hat bei mir auf Anhieb funktioniert.

Eine Sache ist noch etwas mühsam. Wenn man fhem.cfg manuell bearbeitet und speichert ändert sich der MyAlexa State von "running" auf "active". Das sieht man auch am DevStateIcon. Ich habe schon alles mögliche versucht, was mir so eingefallen ist, um einen automatischen "restart" durchzuführen. Das waren notify, doif und watchdog. Nichts von dem hat zuverlässig funktioniert.

Ich nehme an, dass Problem haben andere auch. Kennt hier jemand eine funktionierende Lösung?


Loredo

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Byte09

Zitat von: Bischemer am 14 April 2019, 07:42:33
Hallo justme1968,

irgendwie komme ich nicht weiter. Hatte zur Sicherheit mal das ganze Alexa-Fhem Verzeichnis gelöscht und nochmals neu installiert. Es werden dabei keine Fehler angezeigt. Jedoch hat sich leider nichts geändertich bekomme weiterhin folgende STATE information


Leider bin ich auch kein Linux Experte und gerade etwas verzweifelt. Kannst Du mir noch ein Tipp geben wo ich nachsehen kann bzw. was ich noch versuchen kann um die aktuelle alexa-fhem Version ins System zu bekommen.

Vielen Dank für jeden Hinweis/Tipp

moin,

bist du mit diesem Problem weiter gekommen ? Stehe leider vor gleichem Problem und beisse mir gerade ( und das nicht zum ersten mal ) die Zähne daran aus ?

die entsprechenden Prozesse laufen schon gar nicht :

pi@raspberrypi:~ $ ps -ef | egrep '(alexa|ssh)'
root       449     1  0 08:28 ?        00:00:00 /usr/sbin/sshd -D
pi         758   679  0 08:28 ?        00:00:00 /usr/bin/ssh-agent /usr/bin/dbus                                -launch --exit-with-session x-session-manager
pi         828     1  0 08:29 ?        00:00:00 /usr/bin/ssh-agent -s
root       950   449  1 08:30 ?        00:00:50 sshd: root@notty
root       967   950  1 08:30 ?        00:00:30 /usr/lib/openssh/sftp-server
root      1653   449  0 09:08 ?        00:00:00 sshd: pi [priv]
pi        1660  1653  0 09:08 ?        00:00:00 sshd: pi@pts/0
pi        1708  1662  0 09:14 pts/0    00:00:00 grep -E --color=auto (alexa|ssh)


edit: wenn das schon so losgeht bleibe ich glaube ich lieber bei der alten version solange es irgendwie geht

gruss byte09

Loredo

Zitat von: Byte09 am 15 April 2019, 08:28:59
bist du mit diesem Problem weiter gekommen ? Stehe leider vor gleichem Problem und beisse mir gerade ( und das nicht zum ersten mal ) die Zähne daran aus ?

Sehr wahrscheinlich ist es wie in 99% der Fälle ein lokales Node/NPM Problem.
Hast du Node.js mal komplett neu installiert (als user "fhem", mit sudo Berechtigung)?


# Remember currently installed NPM packages
NPM_INSTALLED_G=$(npm list -g --parseable --depth=0 | tail -n +2 | awk '{gsub(/\/.*\//,"",$1); print}' | grep -v -E "^npm$" | tr '\n' ' ')
NPM_INSTALLED=$(npm list --parseable --depth=0 | tail -n +2 | awk '{gsub(/\/.*\//,"",$1); print}' | grep -v -E "^npm$" | tr '\n' ' ')

# Uninstall Node.js and all installed Node packages
sudo apt purge -y nodejs
sudo apt autoremove -y
sudo apt-get clean
sudo rm -rfv /var/lib/apt/lists/* /etc/apt/sources.list.d/nodesource.list /usr/lib/node_modules /root/.npm $HOME/node_modules $HOME/.npm $HOME/package.json $HOME/package-lock.json

# install Node.js v10
curl -fsSL https://deb.nodesource.com/setup_10.x | sudo bash -
sudo apt install -y nodejs

# Update NPM
sudo npm -g install npm

# Re-install alexa-fhem and any package that was installed before in global context
sudo npm -g install alexa-fhem $NPM_INSTALLED_G $NPM_INSTALLED

# Print global installed packages
npm list -g --depth=0

# Print user installed packages (should be empty!)
npm list --depth=0
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Byte09

@Loredo

dand dir erstmal für die 'Kurzanleitung'. Ich werde das die Tage mal versuchen , wenn ich etwas mehr zeit habe. Da es sich das ganze auf einem RPi abspielt, der noch unter Jessie läuft ( und teil meines aktivsystems ) ist habe ich da etwas 'Angst' vor.

Node und Jessie ist ja so eine Sache  :(

gruss Byte09


itze61

Erst einmal Danke für das tolle Modul.
(Leider) gehöre ich auch zu denen, die in der fhem.cfg editieren und habe daher auch das gleiche Problem wie AlexBV #662
Und auch mein Arbeitskollege würde sich freuen, wenn jemand eine Lösung für ein <Alexa>restart nach einem editieren der fhem.cfg finden würde.

Schöne Grüße

Talkabout

Hallo zusammen,

auch ich habe dieses Modul in Verwendung und es funktioniert gut. Bisher ging aber die Abfrage von Kontakten per Sprache nicht. So etwas wie "Alexa, ist das Fenster im Schlafzimmer offen" wurde mit "Fenster im Schlafzimmer reagiert gerade nicht" quittiert. Um das zu beheben ist folgendes Code-Snippet in der Datei alexa-fhem/lib/server.js in der Methode "propertiesFromDevice" ganz am Ende (vor dem "return") notwendig:

properties.push({
    "namespace": "Alexa.EndpointHealth",
    "name": "connectivity",
    "value": {
      "value": "OK"
    },
    "timeOfSample": new Date(Date.now()).toISOString(),
    "uncertaintyInMilliseconds": 0
  });


Scheinbar braucht Alexa hier den "Health State" des Devices als Property. Damit kommt dann statt der negativen Antwort sowas wie "Das Fenster im Schlafzimmer ist geschlossen". Ich denke es schadet nicht, den "Health State" bei allen Anfragen mitzuschicken.

Hoffe der Maintainer kann das einbauen.

Gruss

gvzdus

Im Vergleich zu Googles API sind die herumgeschobenen Objekte schon ziemlich fett, und es ist etwas frustrierend, dass Amazon damit auch nichts anfängt. Z.B. hat es keinen Mehrwert, bei Gelegenheitssensoren wie den MAX Thermostaten den "richtigen" Zeitpunkt der Messung mitzusenden.
Die "Endpointhealth" hielt ich daher bisher ebenfalls für just another dead attribute.
Hast Du oder jemand anderes das Verhalten auch bei anderen Abfragen als Schalter bemerkt?

Talkabout

Nein, die Problematik gibt es bisher nur bei den Fensterkontakten bei mir. Die Temperatur eines Thermostats kann ich auch ohne den "Health State" abfragen. Allerdings kann ich mir vorstellen, dass das in Zukunft bei diesen auch "obligatorisch" dabei sein muss, zumindest vom dem, was ich so gelesen habe...

Gruss

justme1968

hast du irgendwo gefunden das Alexa.EndpointHealth jetzt zwingend nötig ist?

ich habe gestern versucht einen BEOK thermostaten einzubinden. setzen der temperatur per sprache ging, abfragen nicht. in der app wird keines von beiden angezeigt. ich weiss aber das es definitiv schon mal ging.

mit einem kontakt sensor hatte ich gestern übrigens auch probleme.

bei wem geht das beides noch?


leider ist es immer noch so das die doku ziemlich zu wünschen übrig lässt, das die app mit vielen device typen nicht richtig umgehen kann und das es oft so gut wie unmöglich ist eine fehlermeldung zu finden wenn irgendetwas nicht geht....
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

gvzdus

Moin, ich habe gerade einen meiner MAX-Fensterkontakte einen Alexa-Namen verpasst. Ich kann das Ergebnis von "Talkabout" nachvollziehen: Ohne Endpoint-Health: "Antwortet leider gerade nicht". Mit Endpoint-Health: "Fenster ist geschlossen".

Btw.: War es eigentlich schon immer so, dass man "Alexa: Suche nach neuen Geräten!" sagen konnte? Ergebnis nach einigen Sekunden: "Neues Gerät "Fenster Bad" gefunden. Nett!

Ich habe es jetzt bei mir so eingebaut:

  if( mapping = device.mappings.ContactSensorState ) {
    var current = device.fhem.reading2homekit(mapping, device.fhem.cached(mapping.informId));
    if( current === 'CONTACT_DETECTED' || current === 'Closed' || current === 'closed' )
      current = 'NOT_DETECTED';
    else
      current = 'DETECTED';
    if( current !== undefined ) {
      properties.push( {
          "namespace": NAMESPACE_ContactSensor,
          "name": "detectionState",
          "value": current,
          "timeOfSample": new Date(Date.now()).toISOString(),
          "uncertaintyInMilliseconds": 500
      } );
      properties.push({
          "namespace": "Alexa.EndpointHealth",
          "name": "connectivity",
          "value": {"value": "OK" },
          "timeOfSample": new Date(Date.now()).toISOString(),
          "uncertaintyInMilliseconds": 500
      } );
    }
  }


Device:
Internals:
   DEF        ShutterContact 1488d0
   FUUID      5c4d5efd-f33f-8d06-aeaf-72a2f01aeaaa1098
   IODev      cm
   LASTInputDev cm
   MSGCNT     3
   NAME       eg_bad_fk1
   NR         69
   RSSI       -81.5
   STATE      closed
   TYPE       MAX
   addr       1488d0
   backend    cm
   cm_MSGCNT  3
   cm_TIME    2019-05-01 12:50:37
   rferror    0
   type       ShutterContact
   READINGS:
     2019-05-01 12:50:37   RSSI            -81.5
     2019-05-01 12:50:37   battery         ok
     2019-05-01 12:50:37   batteryState    ok
     2016-10-31 21:34:38   firmware        1.0
     2016-10-31 21:34:38   groupid         0
     2016-10-31 21:34:38   msgcnt          3
     2019-05-01 12:50:37   onoff           0
     2019-05-01 12:50:37   state           closed
     2016-10-31 21:34:38   testresult      2
   internals:
     interfaces switch_active;battery
Attributes:
   IODev      cm
   alexaName  Fenster Bad
   room       MAX

justme1968

ist in der eben gepushten version eingebaut. danke.

leider hilft es bei meinem problem mit dem thermostaten nicht. muss ich also selber suchen :)

@gvzdus: ja. das geht schon immer. die Antwort gibt es auch schon eine weile. scheinbar aber nur wenn das gerät wirklich neu ist. für gelöschte und wieder hinzugefügte geräte meldet alexa das es kein neues gerät gibt. wenn man mit 'set <alexa> add <name>' hinzufügt bekommt man sogar eine push nachricht auf  hand/watch das es ein neues gerät gibt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

juemuc

Hallo zusammen,

wie habt Ihr Euren Fensterkntakt definiert, sodass er  von Alexa erkannt wird? Ich wollte das Feature testen, dass Alexa die Info liefert, ob das Fenster offen oder geschlossen ist. Die neueste ALEXA-Version 0.5.27 habe ich installiert. Hier meine Definition des Fensterkontaktes:
Zitatdefmod HM_Sec_SCo_OEQ0424862 HMCCUDEV OEQ0424862
attr HM_Sec_SCo_OEQ0424862 IODev HMCCU3
attr HM_Sec_SCo_OEQ0424862 alexaName Kuechenfenster
attr HM_Sec_SCo_OEQ0424862 alias HM Fensterkontakt Küche
attr HM_Sec_SCo_OEQ0424862 devStateStyle style="text-align:right"
attr HM_Sec_SCo_OEQ0424862 genericDeviceType contact
attr HM_Sec_SCo_OEQ0424862 group HM Fenster-/Türkontakte
attr HM_Sec_SCo_OEQ0424862 hmstatevals ERROR!7:sabotage;;SABOTAGE!1:sabotage
attr HM_Sec_SCo_OEQ0424862 icon hm-sec-win@black
attr HM_Sec_SCo_OEQ0424862 stateFormat {"Status: ".ReadingsVal($name,"state" ,"")." / LastOpen: ".ReadingsVal($name,"LastOpen","")}
attr HM_Sec_SCo_OEQ0424862 statedatapoint 1.STATE
attr HM_Sec_SCo_OEQ0424862 substitute STATE!(0|false):closed,(1|true):open
attr HM_Sec_SCo_OEQ0424862 userReadings LastOpen:1.STATE.* {if (ReadingsVal($name,"state","") eq "open") {ReadingsTimestamp($name,"state","") =~ /^(\d+)-(\d+)-(\d+)\s(\d+:\d+:\d+)$/;; return "$3.$2.$1 - $4";;} else {ReadingsVal($name,"LastOpen","")}}
Im Alexa-Log ist dieser Eintrag vorhanden:
Zitat[2019-5-1 20:06:08] [FHEM] HM_Sec_SCo_OEQ0424862 is contact
[2019-5-1 20:06:08] [FHEM] HM_Sec_SCo_OEQ0424862 has
[2019-5-1 20:06:08] [FHEM]   StatusLowBattery [battery]
  2019-05-01 20:06:08 caching: HM_Sec_SCo_OEQ0424862-battery: ok
In der Alexa-App wird der Kontakt nicht gefunden.

Was mache ich falsch?
Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).