FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: skycrack am 26 Oktober 2019, 20:41:39

Titel: ?: Ewelink / Sonoff API - Scriptausgabe als Readings speichern
Beitrag von: skycrack am 26 Oktober 2019, 20:41:39
Hallo.

Ich suche eine Möglichkeit Zustände von einem Sonoff Aktor mit original Firmeware auszulesen.
Das ganze ohne Tasmota FW, da die Appfunktionalität beibehalten werden soll. Ausserdem ist das Gerät auch mit IFTTT verknüpft.

Mir ist nicht bekannt das es ein natives Modul zur Anbindung von Sonoff/Ewelink Geräten mit original Firmeware in Fhem gibt.
Nach meinen heutigen Recherchen gibt es jedoch interessante Ansätze, bei denen meine Programmierkenntnisse jedoch nicht ausreichen um da was brauchbares daraus zu machen.

Heute habe ich mir 2 Möglichkeiten angesehen. Vielleicht ist es ja für jemanden interessant.
Zum einen ein Projekt
https://github.com/beveradb/pysonofflan
Ab Sonoff FW Version 3.0.x gibt es nativ auch eine "LAN" Funktion der Sonoff Geräte. Die App von Ewelink unterstütz diese.
In diesem Modus kann ich das Gerät direkt ansprechen, ohne über die Cloud gehen zu müssen.
und des Weiteren 
https://ewelink-api.now.sh/docs/introduction
Damit kann ich mich auf die Cloud verbinden und die Geräte steuern bzw. den Status auslesen.
Die API kann man per nodejs auf der Console recht einfach abfragen. Auch per Websocket der dann als fortlaufender Deamonprozess läuft. Eine statische Abfrage bringt mit folgenden Output auf der Console:
[ { _id: 'xxxxxxxxxxxxxxxx',
    name: 'Garagentor',
    type: '10',
    deviceid: '10008axxxx',
    apikey: 'xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx',
    extra: { _id: 'xxxxxxxxxxxxxxxxx', extra: [Object] },
    __v: 0,
    onlineTime: '2019-10-26T13:46:46.984Z',
    ip: 'xx.xx.xx.xx',
    location: '',
    tags: { disable_timers: [Array], 'xxxxf54_sky@': 'on' },
    offlineTime: '2019-10-26T08:48:09.852Z',
    deviceStatus: '',
    settings:
     { opsNotify: 1,
       opsHistory: 1,
       alarmNotify: 1,
       wxAlarmNotify: 0,
       wxOpsNotify: 0,
       wxDoorbellNotify: 0 },
    devGroups: [],
    groups: [],
    params:
     { controlType: '7',
       bindInfos: [Object],
       timers: [Array],
       pulseWidth: 500,
       pulse: 'off',
       init: 1,
       startup: 'off',
       staMac: '60:01:94:C9:5E:11',
       rssi: -74,
       fwVersion: '3.3.0',
       switch: 'off',
       sledOnline: 'off',
       version: 8,
       partnerApikey: 'xxxxxx-xxxxxx-xxxxx-xxxx-xxxxxxxxxx' },
    online: true,
    createdAt: '2019-09-26T18:17:19.939Z',
    group: '',
    sharedTo: [],
    devicekey: 'xxxxxxx-xxxx-xxxxx-xxxxxxxxx',
    deviceUrl: '',
    brandName: 'SANTTONG',
    showBrand: true,
    brandLogoUrl: '',
    productModel: 'SANTTON_2',
    devConfig: {},
    uiid: 1 } ]
{ error: 500,
  msg: 'TypeError: Cannot read property \'apikey\' of null' }


Diese hätte ich gerne nun in einem Device als Reading, um damit weiterzuarbeiten.
Mit meinem CustomReadingsdevice komme ich hier leider nicht weiter.
defmod EWELINK CustomReadings
attr EWELINK group System
attr EWELINK interval 300
attr EWELINK readingDefinitions COMBINED:qx(node /opt/fhem/ewelink/ewelink.js),Ewelink::
attr EWELINK room 9 System


Ich würde mich über eine Hilfestellung sehr freuen. Vielleicht hat ja jemand Eigeninteresse hier mehr draus zu machen. Eine Fhem Modulerstellung übersteigt bei weitem meine Kompetenzen, daher der Workarround mit den Readings die ich dann "polle".
Gruß Rene
Titel: Antw:?: Ewelink / Sonoff API - Scriptausgabe als Readings speichern
Beitrag von: Hans Franz am 27 Oktober 2019, 08:22:32
Moin,
Ich denke expandJSON (https://fhem.de/commandref.html#expandJSON) wird dir erst einmal weiterhelfen.
ZitatModulerstellung übersteigt bei weitem meine Kompetenzen
Glaube ich nicht. Ist wirklich kein Hexenwerk.

Gruss
Hans
Titel: Antw:?: Ewelink / Sonoff API - Scriptausgabe als Readings speichern
Beitrag von: skycrack am 28 Oktober 2019, 21:00:42
Hallo,
Sorry, aber diese Info bringt mich nicht weiter. Habe mir das angeschaut und wüsste nicht wie ich damit eine Ausgabe meiner consolenabfrage in Readings eines Fhem devices übernehmen könnte.

Jetzt denke ich darüber nach, die ausgabe mit awk und sed in eine CSV schreiben zu lassen und diese mit dem Modul fileread Readings zu erstellen. Wenn es einfacher geht ohne das vorher in eine Datei zu parsen würde ich mich über einen Hinweis freuen.
Gruß Rene
Titel: Antw:?: Ewelink / Sonoff API - Scriptausgabe als Readings speichern
Beitrag von: skycrack am 28 Oktober 2019, 22:24:00
Ich habe mir so was zurechtgeschrieben, bekomme aber Syntaxfehler.
Weis jemand wo das Problem ist?
defmod on_dummy notify dummy:on {system("/opt/fhem/get_ewelinkstatus.sh")};
{my $filename = "/opt/fhem/test.txt";
my ($error, @content) = FileRead($filename);Log3( 'TEST', 5, $error );
my @readings = $content[0];
foreach (@readings)
{
my ($readingname,$y)=split(/:/);
fhem("setreading ewelink_State $readingname $y");
}
}

Vielen Dank
Titel: Antw:?: Ewelink / Sonoff API - Scriptausgabe als Readings speichern
Beitrag von: skycrack am 26 April 2021, 22:26:20
Ich antworte mal selbst, da es vielleicht doch für jemanden hilfreich sein kann, der wie ich lange versucht hat mit der Ewelink Api Sonoff Geräte mit Originalfirmware ohne Tasmota zu nutzen.

Nick Waterton hat ewelink-mqtt geschrieben, welches die Ewelink-Api in Mqtt umsetzt.
https://github.com/NickWaterton/eWeLink-mqtt

Mit dem Fhem Modul MQTT2_Server und MQTT2_Client sind die Ausgaben dann zu verwerten bzw. die Geräte zu steuern.
Inkl. Zeroconf und bidirektionaler Kommunikation ( push )

So bleiben alle Originalfunktionen erhalten und Fhem bekommt die Möglichkeit die  Steuerung zu übernehmen.

Gruß
Rene


Titel: Aw: ?: Ewelink / Sonoff API - Scriptausgabe als Readings speichern
Beitrag von: Raha66 am 14 Dezember 2023, 18:32:52
Moin Rene,
danke, dass du deine ursprüngliche Frage aktualisiert hast. ist diese Lösung immer noch auf dem neuesten Stand der Technik? kannst du mir kurz sagen, welche Schritte nötig sind, um einen Sonoff mit dieser Lösung auf Fehm zu integrieren? ich habe den Link nicht gefunden :(
Besten Dank
Titel: Aw: ?: Ewelink / Sonoff API - Scriptausgabe als Readings speichern
Beitrag von: Neuling83 am 23 Dezember 2023, 23:59:21
Hi, ich schließe mich Raha66 an. Ich hätte da auch starkes Interesse dran. Aber bei mir lässt sich der Link leider auch nicht aufrufen.

Vielen Dank im voraus.