39_alexa.pm und alexa-fhem test version

Begonnen von justme1968, 03 Januar 2019, 22:43:10

Vorheriges Thema - Nächstes Thema

justme1968

@dk3572: ich habe dich genau geschrieben was du setzen sollst. da steht nichts von einer auswahl.

es gibt keine 'richtigen' kommandos. was alexa versteht oder nicht ändert sich dauernd. du kannst nur die verlinkte doku lesen und probieren.

ich habe eben die prioritäten der erkannten device typen geändert. media hat jetzt vorrang und switch kommt als letztes.

@ToKa: meinst du wirklich thermostat oder doch thermometer?
ich habe auch hier die reihenfolge geändert. damit müsste es gehen. vermutlich siehst du jetzt aber keine temperatur mehr. abfragen müsste trozdem noch gehen. wenn du den erst in der app auch sehen möchtest musst du den die temperatur auf ein anderes device kopieren und dies zusätzlich ein binden. z.b. per readingsProxy.

@sTaN: umgekehrt: wenn man die neueste version von npmjs holen möchte darf im aktuellen verzeichnis nichts mit gleichem namen liegen. alles andere ist egal.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

dk3572

Zitat von: justme1968 am 09 Februar 2019, 11:06:32
@dk3572: ich habe dich genau geschrieben was du setzen sollst. da steht nichts von einer auswahl.

es gibt keine 'richtigen' kommandos. was alexa versteht oder nicht ändert sich dauernd. du kannst nur die verlinkte doku lesen und probieren.

ich habe eben die prioritäten der erkannten device typen geändert. media hat jetzt vorrang und switch kommt als letztes

Hallo justme1968,

ich hoffe du hast meinen letzten Beitrag nicht als Vorwurf aufgefasst. Sollte nämlich keiner sein.
Danke für deine Arbeit und Unterstützung.
Ich spiel dann mal weiter  ;)

Schönes Wochenende und VG
Dieter

balli1187

Zitat von: justme1968 am 09 Februar 2019, 11:06:32
@dk3572: ich habe dich genau geschrieben was du setzen sollst. da steht nichts von einer auswahl.
Ich würde an der Stelle um etwas Verständnis werben. Normalerweise wird man hier im Forum und auch hier im Thread immer wieder darauf hingewiesen, dass man sich an die Möglichkeiten/Vorgaben von FHEMWEB halten soll.
Ich hatte mich auch mal versucht das einzurichten und wusste nicht, ob hier damals über eine beta-Version diskutiert wurde oder nicht.


Gesendet von iPhone mit Tapatalk
FHEM auf QNAP im docker, nanoCUL per ser2net an VU+, 2x Echo Dot, 3x HM-ES-PMSw1-Pl, 3x HM-LC-Bl1PBU-FM, 6x Sonoff Basic, div. "Shelly Eigenbauten" von Papa Romeo, ESPRGBWW-Controller, ...
Projekte: Smart Mirror in Spiegelschrank auf RPi Zero

ToKa

Zitat von: justme1968 am 09 Februar 2019, 11:06:32

@ToKa: meinst du wirklich thermostat oder doch thermometer?
ich habe auch hier die reihenfolge geändert. damit müsste es gehen. vermutlich siehst du jetzt aber keine temperatur mehr. abfragen müsste trozdem noch gehen. wenn du den erst in der app auch sehen möchtest musst du den die temperatur auf ein anderes device kopieren und dies zusätzlich ein binden. z.b. per readingsProxy.

Ich habe das Gerät in der Alexa App gelöscht und neu gesucht, aber es wird wieder von Tyo Temperatursensor erkannt und hinzugefügt - sprich es wird nur die Temperatur angezeigt. Das gleiche auch bei einem Fibaro Rauchmelder.

Alexa-fhem Version ist die 0.5.17

Beste Grüße
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

Sascha_F

So, ich möchte mich noch einmal zu Wort melden :-)

Der CustomSkill läuft jetzt auch (wieder) neben FHEM "Connector". Super finde ich auch die Umstellung auf filter" : "alexaName=..*, --> so braucht es endlich nicht mehr den separaten room alexa :-)

Ebenso ist es für "Neueinsteiger" auch sicher deutlich einfacher, direkt start/stop/restart/reload im Device nutzen zu können, als vorher über (zumindest bei mir) DOIF und Dummy für den Status!

Im global habe ich genericDeviceType media ergänzt und meine TVs hinzugefügt --> wurden auch korrekt als "Fernseher" erkannt. Hat jemand eine Ahnung, ob auch Kodi -steuerbar- hinzugefügt werden kann (und wenn ja, auch über media?)?

Viele Grüße
Sascha

Markus.

Hallo Zusammen,

Hoffe das gehört hier hin.. ;-)
habe heute mal ein FHEM- Update gemacht. Verwende die Alexa-fhem V 0.4.4 und habe nund folgende Readings



NR 195
NTFY_ORDER 50-alexa
STATE  stopped; alexa-fhem not installed. install with 'sudo npm install -g alexa-fhem'.
TYPE  alexa
active  0
alexa-fhem version  0.4.4
logfile  ./log/alexa-%Y-%m-%d.log


Habe irgendwie am Rande mitbekommen, das es eine neue Version gibt. Ich verwende eine Custom Skill mit dem normalen Smart Home skill von Amazon. Funktioniert auch alles weiterhin soweit, wie es im Moment aussieht.
Aber muss ich da was anpassen damit der ServiceStatus wieder normal angezeigt wird?
Hat das irgendwas mit den Umfangreichen Änderungen am Modul zu tun

Gruß

Markus

Romoker

@Markus

die Meldung hat mit der neuen alexa-fhem Version zu tun. Sie unterstützt neben dem Smart Home Skill parallel auch den Custom Skill, falls du ihn nutzt. Ich empfehle auf die neue Version zu migrieren. Wie das geht, hat MadMax-FHEM hier beschrieben: https://forum.fhem.de/index.php/topic,94817.msg900326.html#msg900326
Viele Grüße
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

Sascha_F

Zitat von: Markus. am 10 Februar 2019, 07:21:36
Hallo Zusammen,

Hoffe das gehört hier hin.. ;-)
habe heute mal ein FHEM- Update gemacht. Verwende die Alexa-fhem V 0.4.4 und habe nund folgende Readings



NR 195
NTFY_ORDER 50-alexa
STATE  stopped; alexa-fhem not installed. install with 'sudo npm install -g alexa-fhem'.
TYPE  alexa
active  0
alexa-fhem version  0.4.4
logfile  ./log/alexa-%Y-%m-%d.log


Habe irgendwie am Rande mitbekommen, das es eine neue Version gibt. Ich verwende eine Custom Skill mit dem normalen Smart Home skill von Amazon. Funktioniert auch alles weiterhin soweit, wie es im Moment aussieht.
Aber muss ich da was anpassen damit der ServiceStatus wieder normal angezeigt wird?
Hat das irgendwas mit den Umfangreichen Änderungen am Modul zu tun

Gruß

Markus

Hi Markus,

denk daran, dass Du die Daten statt in der config.json jetzt in ./alexa-fhem.cfg einträgst (sofern Du nicht wieder auf config.json geändert hast).

Ich selbst habe das bisherige alexa-device gelöscht und neu angelegt. Vorher natürlich auch die neue alexa-fhem Version installiert (war auch bis gestern noch auf der v0.4.4). Das notify und bei mir ein DOIF für start/restart/stop sind hinterher nicht mehr erforderlich, da das Modul bereits alles integriert hat.

Wenn Du es wie in der Anleitung machst, befindet sich die alexa-fhem.cfg unter /opt/fhem. Das Installationsverzeichnis von alexa-fhem ist /usr/lib/node_modules.

Für key.pem und cert.pem habe ich mir unter /opt/fhem einen Ordner alexa-fhem-Zertifikate erstellt und entsprechend in der alexa-fhem.cfg hinterlegt, da ich unsicher war, ob diese bei zukünftigen Updates direkt im alexa-fhem-Installationsverzeichnis erhalten bleiben.

Danach habe ich den Custom-Smarthome-Skill deaktiviert, alle Geräte gelöscht, die in der App als "offline" angezeigt wurden und dann neu gescannt.
Beachte auch: Die neue Version benötigt den Raum alexa nicht mehr! Es werden alle Geräte "aufgenommen", bei denen das Attribut alexaName vorhanden ist.


In eigener Sache: Kann mir bitte jemand sagen, wozu das Attribut alexaRoom gut ist? Ich hatte es mal gesetzt, mal nicht - konnte aber keinen Unterschied feststellen. Die Geräte wurden in der Alexa-App nicht einem Raum/einer Gruppe mit gleichem Wortlaut zugeordnet oder ähnlich.

Auch zu alexaConfirmationLevel und alexaStatusLevel finde ich irgendwie nichts mehr (beide hatte ich bisher gesetzt). Ich gehe davon aus, dass diese nur i.V.m. Custom-Skill relevant sind, richtig? Aber was bedeutet denn welche Ausprägung?

Danke + viele Grüße
Sascha

TomLee

In eigener Sache: Kann mir bitte jemand sagen, wozu das Attribut alexaRoom gut ist? Ich hatte es mal gesetzt, mal nicht - konnte aber keinen Unterschied feststellen. Die Geräte wurden in der Alexa-App nicht einem Raum/einer Gruppe mit gleichem Wortlaut zugeordnet oder ähnlich.

alexaRoom ist eigentlich nur für den Costum-Skill, neu ist mir jetzt auch das man es nun auch für Lightscene und strucure verwenden kann -siehe Wiki -> Was geht alles.

ToKa

Hallo justme,

ich habe den Fensterkontakt noch einmal gelöscht in der Alexa-App und ein Reload durchgeführt. Das Gerät ist umgehend wieder in der App als Temperatursensor angelegt worden. Hier der Auszug aus dem Log und ein List des Geräts:

[2019-2-11 18:25:33] [FHEM] Fetching FHEM devices...
[2019-2-11 18:25:33] [FHEM] fetching: http://127.0.0.1:8083/fhem?cmd=jsonlist2%20NAME=EG_ga_SEN_Tuerkontakt_Garagentor&XHR=1
*** FHEM: connected
[2019-2-11 18:25:33] [FHEM] got: 1 results
[2019-2-11 18:25:33] [FHEM] EG_ga_SEN_Tuerkontakt_Garagentor is contact
[2019-2-11 18:25:33] [FHEM] EG_ga_SEN_Tuerkontakt_Garagentor has
[2019-2-11 18:25:33] [FHEM]   BatteryLevel [battery]
[2019-2-11 18:25:33] [FHEM]   StatusLowBattery [battery]
[2019-2-11 18:25:33] [FHEM]   CurrentTemperature [temperature]


Internals:
   DEF        d14c12e6 34
   FUUID      5c5bef9b-f33f-2e5f-2b1c-6c7c5f3889842337
   IODev      ZWAVE1
   NAME       EG_ga_SEN_Tuerkontakt_Garagentor
   NR         205
   STATE      closed
   TYPE       ZWave
   ZWaveSubDevice no
   homeId     d14c12e6
   nodeIdHex  22
   READINGS:
     2017-10-22 17:34:51   alarm           HomeSecurity: Tampering - product covering removed
     2018-02-23 16:34:20   alarm_AccessControl Window/Door is closed, notificationIsOn
     2017-10-22 17:42:03   alarm_HomeSecurity Event cleared: Previous Events cleared, notificationIsOn
     2017-10-24 20:04:27   assocGroups     3
     2018-02-22 02:30:42   battery         60 %
     2018-01-04 18:07:09   model           FIBARO System FGDW002 Door Opening Sensor 2
     2018-01-04 18:07:09   modelConfig     fibaro/fgdw2.xml
     2018-01-04 18:07:09   modelId         010f-0702-1000
     2018-01-14 13:16:41   neighborList    ZWAVE1 ST_fl_US_Wandspot E1_wz_ZS_Tischleuchte_Wand E2_fl_ZS_Wandspot E2_ku_ZS_Tischleuchte E3_fl_ZS_Wandspot EG_ga_ZS_LEDStrip_Glasbausteine E1_wz_ZS_AllInOnePC
     2018-01-04 01:12:41   neighborUpdate  failed
     2018-01-23 06:38:44   reportedState   dim 19
     2018-01-23 06:38:44   state           dim 19
     2018-02-23 06:15:15   temperature     6.4 C
     2018-02-24 04:57:23   timeToAck       0.104
     2018-02-24 04:57:23   transmit        OK
     2018-02-24 04:57:21   wakeup          notification
     2017-10-22 17:34:52   wakeupReport    interval 64800 target 1
Attributes:
   DbLogInclude alarm_AccessControl,alarm_HomeSecurity,temperature
   IODev      ZWAVE1
   alexaName  Garagentor
   alias      Garagentor
   classes    ZWAVEPLUS_INFO ASSOCIATION ASSOCIATION_GRP_INFO APPLICATION_STATUS BATTERY CONFIGURATION CRC_16_ENCAP DEVICE_RESET_LOCALLY FIRMWARE_UPDATE_MD MANUFACTURER_SPECIFIC MULTI_CHANNEL_ASSOCIATION ALARM POWERLEVEL SECURITY SENSOR_MULTILEVEL VERSION WAKE_UP
   devStateIcon .*closed:fts_garage_door_100 .*open:fts_garage
   event-on-change-reading .*
   event-on-update-reading battery,temperature,wakeup
   extendedAlarmReadings 1
   genericDeviceType contact
   group      Sicherheit
   icon       hue_room_carport
   room       Garage,GoogleAssistant,Übersicht
   stateFormat {(split(/,|is /, ReadingsVal($name,"alarm_AccessControl","")))[1]}
   vclasses   ALARM:5 APPLICATION_STATUS:1 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BATTERY:1 CONFIGURATION:1 CRC_16_ENCAP:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:4 MANUFACTURER_SPECIFIC:2 MULTI_CHANNEL_ASSOCIATION:3 POWERLEVEL:1 SECURITY:1 SENSOR_MULTILEVEL:5 VERSION:2 WAKE_UP:2 ZWAVEPLUS_INFO:2


Vielleicht kannst Du damit ja herausfinden, warum der Kontakt nicht als solcher erkannt wird. Wenn ich sonst noch etwas liefern kann, lass es mich wissen.

Beste Grüße
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

stefanru

Hi justme,

ich habe auch mal auf die neue Version umgestellt.
Alles bestens. Funktioniert einwandfrei.

Habe aber ein paar fixmes von mir nachziehen müssen.
Ein großer Teil spielereien. Ich kann auch nicht mehr alle fixes 100% dem Fehler zuordnen, aber ich versuche es zu beschreiben.
Aber auch funktionale wie der "undefiend endlos loop" usw.

Ich würde sie dir hier gern mal vorstellen eventuell könntest du etwas in den standard übernehmen.
Vielleicht kannst du es auch besser lösen, sind nur hackes die mir aber sehr helfen.
Was du nicht übernimmst ziehe ich weiter von Hand nach.

Vielen Dank für die tolle Arbeit.

Fixmes (immer eine Zeile davor zur Einordnung, Zeilen Angabe aus Version 0.5.15, stimmen aber nicht ganz da sich mit jeder Änderung ja die Zeilen verschieben. Solltest du etwas nicht finden gebe ich gerne noch eine genauere Einordung):

Ich kann undefiend nicht auf undefiend stellen loop, Zeile 2144

        response.response.outputSpeech.text = 'Ich kenne: '+response.response.outputSpeech.text;
//fixme Fehler
      } else if( command.characteristic && device !==undefined && command.device !== undefined) {


Doorstate fix, open erkennung mit regexp, Zeile 1972:

            state += 'der Batteriestand ist '+ ((device.fhem.cached(device.mappings.StatusLowBattery.informId)==='ok')?'in ordnung':'niedrig');

          }
  //fixme doorstate
  var patt = /open.*/i;
  if( device.mappings.CurrentDoorState ) {
    if( state ) {state = state.replace( ' und ', ', ' ); state += ' und ' };
    state += 'ist '+ ((patt.test(device.fhem.cached(device.mappings.CurrentDoorState.informId)))?'geöffnet':'geschlossen');
          } else if( device.mappings.ContactSensorState ) {
    if( state ) {state = state.replace( ' und ', ', ' ); state += ' und ' };
    state += 'ist '+ ((patt.test(device.fhem.cached(device.mappings.ContactSensorState.informId)))?'geöffnet':'geschlossen');
          }


Fenster und Fensterkontakt, Zeile 686.

          ret += '\n    rollos';
//fixme Fenster
if( !seen['fenster'] )
        ret +='\n    fenster';


Einfacher m3u Audiowiedergabe, für z.B. Plex Ausioausgabe. Hier im Forum von mir beschrieben, Zeile 1628:

                response.response.outputSpeech.ssml = result;
              }
    // fixme AudioPlayer Test
              if( match = result.match( /<myaudiourl>(.*)<\/myaudiourl>/ ) ) {
                  log.info ( 'Audiourl Match: ' + match[1] );
                  var txt = result.match( /<myaudiotext>(.*)<\/myaudiotext>/ )
                  log.info ( 'Audiotext Match: ' + txt[1] );
                  response.response = {
                    shouldEndSession: true,
                    outputSpeech: {                     
                                     type: "PlainText",
                                     text: txt[1]                     
                                  },
                    directives: [
                      {
                        type: "AudioPlayer.Play",
                        playBehavior: "REPLACE_ALL", // Setting to REPLACE_ALL means that this track will start playing immediately
                        audioItem: {
                            stream: {                         
                              url: match[1],
                              token: "1", // Unique token for the track - needed when queueing multiple tracks                           
                              offsetInMilliseconds: 0
                                    }
                                  }
                      }
                               ]
                                   }}
                           


Device mappings für custom Skill (Humidy, Pressure, Wind, UV Index, CurrentLux, Forecast, CurrentLiter, CurrentKwh, CurrentSensorState), Zeile 1882

            state += ' misst '+ device.fhem.cached(device.mappings.CurrentTemperature.informId).replace('.',',') +' Grad';
          }
 
     // fixme Humidity
  if( device.mappings.CurrentRelativeHumidity ) {
            if( state ) {state = state.replace( ' und ', ', ' ); state += ' und ' };
if ( state.search(' misst ') == -1) { state += ' misst ';};
            state += device.fhem.cached(device.mappings.CurrentRelativeHumidity.informId).replace('.',',') +' Prozent Luftfeuchte';
             }
// fixme Pressure
  if( device.mappings.CurrentRelativePressure ) {
            if( state ) {state = state.replace( ' und ', ', ' ); state += ' und ' };
if ( state.search(' misst ') == -1) { state += ' misst ';};
            state += device.fhem.cached(device.mappings.CurrentRelativePressure.informId).replace('.',',') +' Hektopascal Luftdruck';
             }
// fixme Wind
  if( device.mappings.WindSpeed ) {
           if( state ) { state = state.replace(' und ', ', ' ); state += ' und ' };
   if ( state.search(' misst ') == -1) { state += ' misst ';};
            state += device.fhem.cached(device.mappings.WindSpeed.informId).replace('.',',') +' kmH Windgeschwindigkeit';
             }
  // fixme UVIndex
if (device.mappings.UVIndex) {
  if( parseInt(device.fhem.cached(device.mappings.UVIndex.informId)) > 0) {
            if( state ) {state = state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'der UV Index ist '+ device.fhem.cached(device.mappings.UVIndex.informId).replace('.',',');
             }
}
    // fixme CurrentLux
if (device.mappings.CurrentLux) {
  if( parseInt(device.fhem.cached(device.mappings.CurrentLux.informId)) > 0) {
            if( state ) {state = state.replace( ' und ', ', ' ); state += ' und ' };
if ( state.search(' misst ') == -1) { state += ' misst ';};
            state += device.fhem.cached(device.mappings.CurrentLux.informId).replace('.',',') +' Lux';;
             }
}
    // fixme Forecast
  if( device.mappings.Forecastcode ) {
            if( state ) {state = state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'die Vorhersage ist '+ device.fhem.cached(device.mappings.Forecastcode.informId);
             }
   // fixme CurrentLiter
  if( device.mappings.CurrentLiter ) {
            if( state ) {state = state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'der Füllstand ist '+ device.fhem.cached(device.mappings.CurrentLiter.informId) +' Liter';
             }
    // fixme CurrentKwh
  if( device.mappings.CurrentKwh ) {
            if( state ) {state = state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'der Zählerstand ist '+ device.fhem.cached(device.mappings.CurrentKwh.informId).replace('.',',') +' Kilowattstunden';;
             }
   // fixme CurrentSensorState
  if( device.mappings.CurrentSensorState ) {
            if( state ) {state = state.replace( ' und ', ', ' ); state += ' und ' };
            state += 'der Status ist '+ device.fhem.cached(device.mappings.CurrentSensorState.informId).replace('.',' ');
             }


Gruß,
Stefan

sbiermann

Moin,
wie betreibe ich denn eine aktuelle alexa-fhem mit dem 39_alexa.pm Modul wenn beides in einen Kubernetes Cluster läuft, soweit ich das sehe gibt es in dem Modul keine Möglichkeit eine IP oder DNS-Namen anzugeben wo das Modul das aktuelle alexa-fhem findet. Laut Doku erwartet es anscheinend das alles auf dem gleichen Rechner/Container läuft, was ich aber sehr unschön wäre.

Hintergrund ist, ich stelle gerade meine Softwarekomponenten auf HA-Betrieb um und ich verwende noch eine uralt Alexa 0.3.5 Version, die würde ich dann gleichzeitig mal updaten wollen. FHEM ist mittlerweile schon aktuell.

Viele Grüße
Stefan

justme1968

@ToKa: welche alexa-fhem version ist das ?

@stefanru: ich schaue es mir an.

@sbiermann: das ist schon x mal erklärt worden ...

- wenn du die neuen features wie den autostart nicht nutzen möchtest bleibt alles beim alten
- wenn du den lokalen autostart nutzen möchtest geht alles automatisch sobald lokal installiert ist
   eventuell musst du dein altes config file übernehmen oder das neue anpassen
- wenn du alexa-fhem auf einem anderen host automatisch starten möchtest  gibt es die
   alexaFHEM-host und alexaFHEM-user attribute

vom autostart abgesehen ist es wie bisher auch: nicht das modul muss alexa-fhem finden sondern alexa-fhem muss deine fhem installation finden.

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

sbiermann

Alles klar, danke, das könnte mal mit in die Doku aufgenommen werden. In den vielen Threads hier findet man die Info nicht mehr.

Paul

Hallo.

ich wußte warum ich so lange mit der Installation gewartet habe. Bei mir ist es nicht einfach. >:(

Kann mir jemand auf die Sprünge helfen, es happert schon nach der dritten Wiki Anweisung.

nuc@NUC:/$ node --version
v8.9.4
nuc@NUC:/$ sudo npm install -g alexa-fhem
/usr/local/lib/node_modules/npm/bin/npm-cli.js:85
      let notifier = require('update-notifier')({pkg})
      ^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:374:25)
    at Object.Module._extensions..js (module.js:405:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Function.Module.runMain (module.js:430:10)
    at startup (node.js:141:18)
    at node.js:980:3
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic