ioBroker <==> FHEM

Begonnen von Bluefox, 31 Mai 2016, 22:56:15

Vorheriges Thema - Nächstes Thema

Bluefox

Hallo,
ich bin mit der ersten Implementierung von FHEM<=>ioBroker Kopplung fertig.
Es gibt für mich, als Fremder, viele Fragen und unklare Stellen. Aber ich werde trotzdem versuchen.

ioBroker ist noch ein Automatisierungssystem, das aber komplett mit Javascript geschrieben ist.
ioBroker unterscheidet sich vom FHEM, dass es keine Konfig-Dateien editiert werden müssen und alle Einstellungen passieren mittels GUI im WEB. Auch man kann mit Hilfe vis, mobile, flot sehr schöne Visualisierungen machen.

FHEM ist bekannt von vielen Anbindungen, die implementiert sind und eine riesige Community. Man kann wunderbar die Synergie zwischen zwei Projekten benutzen.

Es gibt aber auch noch offene Fragen:
- gibt es die Möglichkeit die Meta-Information über "Readings" zu bekommen? So was wie: Einheit, Typ (bool, string, number)
- wie kann ich die Werte über telnet schreiben? "setstate wetter_prenzelberg windDegrees 67.9" ?
- Es müssen vermutlich nicht nur "Readings" geben sonder auch "Settings" oder "Writings"?


Bluefox

Um ioBroker zu installieren braucht man node.js 4.0 (nicht 5.0 oder 6.0) und folgendes zu schreiben:

mkdir /opt/iobroker
chmod 777 /opt/iobroker
cd /opt/iobroker
npm install iobroker
chmod 777 * -R

Danach sollte ioBroker Admin über http://ip:8081 erreichbar sein.

Nach dem als FHEM adapter installiert ist (sehe Bilder), kann man auch mobile und vis Adapter installieren und die Visualisierung machen.

Falls Fragen gibt, am besten am http://forum.iobroker.net fragen oder einfach hier schreiben.
Es gibt auch Dokumentation (noch in der Entwicklung) unter http://iobroker.net

Bluefox

Es kommen noch weitere Fragen.
Ich beobachte MeinWetter.
{
    "Name":"MeinWetter",
    "PossibleSets":"update",
    "PossibleAttrs":"verbose:0,1,2,3,4,5 room group comment:textField-long alias eventMap userReadings:textField-long event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading cmdIcon devStateIcon devStateStyle fp_Erdgeschoss icon sortby webCmd widgetOverride userattr",
    "Internals": {
      "DEF": "638242 3600 de",
      "INTERVAL": "3600",
      "LANG": "de",
      "LOCATION": "638242",
      "NAME": "MeinWetter",
      "NOTIFYDEV": "global",
      "NR": "66",
      "NTFY_ORDER": "50-MeinWetter",
      "STATE": "Initialized",
      "TYPE": "Weather",
      "UNITS": "c"
    },
    "Readings": {
      "current_date_time": { "Value":"none", "Time":"2016-05-30 18:14:23" },
      "lastError": { "Value":"connect to https://query.yahooapis.com:443 timed out", "Time":"2016-06-01 09:47:50" },
      "validity": { "Value":"stale", "Time":"2016-06-01 09:47:50" }
    },
    "Attributes": {      "room": "Wettervorhersage"    }
  },


Da Gibt es lastError und validity in Readings. Ich kann aber das nicht unter PossibleAttrs oder PossibleSets finden. D.h. Falls die Werte nicht gesetzt sind, dann habe ich keine Chance die Readings vor definieren. Erst wenn die gesetzt sind werde ich über die erfahren?

- Können alle Objekte "lastError" und "validity" haben?

- Welche Werte kann "validity" haben?

rudolfkoenig

Zitat- gibt es die Möglichkeit die Meta-Information über "Readings" zu bekommen? So was wie: Einheit, Typ (bool, string, number)
Nein, hoechstens als Experimentalversion, irgendwo versteckt.
Es gibt hier aber immer wieder Diskussionen, dass sowas noetig ist, die Letzte war mWn diese.
Wozu wuerde man diese Info im iobroker verwenden?

Zitat- wie kann ich die Werte über telnet schreiben? "setstate wetter_prenzelberg windDegrees 67.9" ?
Werte schreiben ist sehr unpraezise, muss also raten: wenn man ein Ereignis simulieren will, dann mit trigger. Wenn man einen Aktor schalten will, dann mit set. setstate aendert den Status eines Aktors, ohne ein Befehl zu senden, z.Bsp. ist das bei der Initialisierung noetig.
Evtl. ist es aber sinnvoller ein ioBrokerDevice Modul zu erstellen, der diese Sachen direkt erledigt, ohne den Umweg ueber dummys/etc.

Zitat- Es müssen vermutlich nicht nur "Readings" geben sonder auch "Settings" oder "Writings"?
Heisst anders:
- Die Liste der moeglichen set Befehle kriegt man mit "set Geraet ?", Rueckgabewert ist eine Leerzeichen getrennte Liste, an den einzelnen Worten haengt optional mit Doppelpunkt getrennt die Liste der Moeglichen Werte (siehe http://fhem.de/commandref.html#widgetOverride). Das gleiche Info steckt auch in JsonList2 bzw. XmlList
- Analog gibt es "get Geraet ?"
- Attribute: Vom Benutzer aenderbare Parameter, die das Verhalten beeinflussen, siehe "attr Geraet ?"
- Internals: Sachen, die nicht gespeichert werden muessen, werden aber zum Laufzeit benoetigt.
- Readings: Von den Geraeten gemeldete Werte, die von FHEM gespeichert werden

ZitatD.h. Falls die Werte nicht gesetzt sind, dann habe ich keine Chance die Readings vor definieren.
Was genau meinst du, mit "vor definieren"?

ZitatErst wenn die gesetzt sind werde ich über die erfahren?
Korrekt. Es gibt keine Liste aller Readings, es sei denn, der Modulautor hat sie dokumentiert.
Ich moechte auch davor warnen, dass ein Frontend/anderes System versucht alle Readings/Attribute/Sets zu "verstehen". Dazu gibt es zu viele, und die aendern sich auch taeglich. Die Welt ist nicht so uniform, wie man es denkt.

akamia

Nutze seit ca. einem Jahr beide Systeme über MQTT gekoppelt. Dies funktioniert einwandfrei - ist aber aufwendig in der Konfiguration. Der Einarbeitungsaufwand in FHEM ist höher. Er lohnt sich angesichts der vielen ausgereiften Module auf jeden Fall.

Ich freue mich auf die vielen neuen Möglichkeiten.
FHEM 5.8 auf CubieTruck, HomeMatic, 1-wire, KM200, FBH, DENON X4000, Solo4k, Arduinos, Milight, 7580, ioBroker, etc.

Bluefox

Hallo Rudi!  ;)

Höchst persönlich  ;D Danke für deine Antworten.

Zitat von: rudolfkoenig am 01 Juni 2016, 10:17:20
Wozu wuerde man diese Info im iobroker verwenden?
Na ja.
- Erstens muss man wissen wie die Daten gesteuert werden müssen. Ob man ein string, Nummer oder Boolean schreiben darf. Die Werte, die geschrieben werden, werden automatisch angepasst (aus "1" wird ein true, falls "boolean" und aus "5,6" wird ein 5.6, falls number)
- Um SQL platz zu sparen werden alle Variablen in 3 Tabellen geteilt (bool, number, string) und natürlich die Units werden nicht im SQL abgespeichert. Die ändern sich doch nie.
- Es wird überall (flor, telegram, mobile) versucht die Units zu zeigen. Damit funktioniert die Formatierung richtig (Zahlen nach Komma usw, Punkt statt Komma als float divider)
- In den Charts werden dann die Units auch angezeigt aber nicht im SQL gespeichert.
- vielleicht noch irgendwo... ;)

Zitat von: rudolfkoenig am 01 Juni 2016, 10:17:20
Werte schreiben ist sehr unpraezise, muss also raten: wenn man ein Ereignis simulieren will, dann mit trigger. Wenn man einen Aktor schalten will, dann mit set. setstate aendert den Status eines Aktors, ohne ein Befehl zu senden, z.Bsp. ist das bei der Initialisierung noetig.
Das ist schon was. Ich brauche also "set"

Zitat von: rudolfkoenig am 01 Juni 2016, 10:17:20
Evtl. ist es aber sinnvoller ein ioBrokerDevice Modul zu erstellen, der diese Sachen direkt erledigt, ohne den Umweg ueber dummys/etc.
Da ich im Perl nur zwei Zeilen geschrieben habe und dafür die noch vergessen habe wird dieser Weg für mich kompliziert und dass heißt, man muss noch eine Konfig-datei schreiben. Das will ich aber vermeiden :)

Zitat von: rudolfkoenig am 01 Juni 2016, 10:17:20
Heisst anders:
- Die Liste der moeglichen set Befehle kriegt man mit "set Geraet ?", Rueckgabewert ist eine Leerzeichen getrennte Liste, an den einzelnen Worten haengt optional mit Doppelpunkt getrennt die Liste der Moeglichen Werte (siehe http://fhem.de/commandref.html#widgetOverride). Das gleiche Info steckt auch in JsonList2 bzw. XmlList
- Analog gibt es "get Geraet ?"
- Attribute: Vom Benutzer aenderbare Parameter, die das Verhalten beeinflussen, siehe "attr Geraet ?"
- Internals: Sachen, die nicht gespeichert werden muessen, werden aber zum Laufzeit benoetigt.
- Readings: Von den Geraeten gemeldete Werte, die von FHEM gespeichert werden
Danke. Werde ich experimentieren.

Zitat von: rudolfkoenig am 01 Juni 2016, 10:17:20
Was genau meinst du, mit "vor definieren"?
Also im ioBroker werden alle mögliche Variablen von Geräten sofort angelegt. Egal ob die momentan Werte haben oder nicht. Das braucht man für die Konfiguration, damit ich die Variablen schon bequem im Konfig Dialog auswählen kann oder im WEB Visualisierung  projektieren.

Zitat von: rudolfkoenig am 01 Juni 2016, 10:17:20
Korrekt. Es gibt keine Liste aller Readings, es sei denn, der Modulautor hat sie dokumentiert.
Ich moechte auch davor warnen, dass ein Frontend/anderes System versucht alle Readings/Attribute/Sets zu "verstehen". Dazu gibt es zu viele, und die aendern sich auch taeglich. Die Welt ist nicht so uniform, wie man es denkt.
Hm... Na ja. vielleicht wird es trotzdem irgendwie funktionieren.

Es gibt noch Fragen:
- Können alle Objekte "lastError" und "validity" haben?
- Welche Werte kann "validity" haben?
- Wie kann ich JsonList2 Info nur für ein Gerät bekommen?

Danke.


rudolfkoenig

Zitat- Können alle Objekte "lastError" und "validity" haben?
Falsche Frage. Buchstabengenau beantwortet: ja. Oder auch: keine Ahnung: was ist lastError und validity? Vmtl. Internals/Readings eines bestimmten Moduls, die andere Module (z.Bsp. meine) nicht haben.

ZitatWie kann ich JsonList2 Info nur für ein Gerät bekommen?
http://fhem.de/commandref.html#JsonList2
Will dich nicht aergern, aber man schaut bitte zuerst da nach.
Und wenn man da was nicht verstanden hat, dann hier.

Bluefox

#7
Danke für die Information.
Ich habe jetzt Schreiben auch implementiert, aber man muss natürlich wissen, was man schreibt.  :)

Falls während Laufzeit ein "inform" mit dem unbekanntem Attribut oder unbekanntem Gerät kommt, dann wird gezielt noch mal die Information über JsonList2 angefordert in der Hoffnung, dass neues Attribut jetzt in JSON Objekt drin steht.

Falls es jemand ausprobieren kann, währe es super.

Bluefox

Es gibt neue Version von FHEM Adapter.
Da werden jetzt RGB und on/off Geräte unterstützt.

Bitte noch weitere Steuerungsmodelle anbieten.

Bluefox

FHEM adapter funktioniert für RGB und on/off.
Kann jemand hier Rolladen und Dimmer posten?

JsonList2 Gerät

heiko73

Hi, habe gerade den Umstieg von reiner Homematic CCU Lösung auf FHEM hinter mir und bin begeistert, was ich mit FHEM alles machen kann. Größtes Manko ist für mich persönlich das Fehlen eines UI Editors, mit dem man ohne Java- und HTML- und CSS-Code zu schreiben einfach WYSIWYG-mässig seine Oberfläche für das Tablet zusammenklicken kann. Das hat bei meiner reinene CCU basierten Lösung genial mit DashUI/CCU.IO geklappt und etwas ähnliches gibt es leider für FHEM nicht, dachte ich.

Bis ich auf diesen Thread hier gestoßen bin! Leider scheint hier seit einiger Zeit nichts mehr zu passieren, bin daher nicht sicher ob die FHEM Integration aufgegeben wurde oder einfach nur stockt.

Ich würde mich auf jeden Fall gern als Beta Tester / Lieferant für Beispieldaten zur Verfügung stellen, meine ioBroker Instanz meldet mir nämlich ne Menge "unknown event"'s und ich glaube, ich habe eine mittelgroße Sammlung von Geräten, darunter eine ganze Menge Homematic, einige FS20 sowie Fritz!Dect etc. Leider keine Rolladensteuerungen, deswegen kann ich dazu nichts wirkliches sagen...

Kann ich irgendwie helfen? Programmiererfahrung ist vorhanden, auch wenn ich mich mit Java schwer tue (bin gerade dabei, mir wegen FHEM noch Perl anzueignen und das klappt schon ganz gut).

Danke auf jeden Fall für die unglaublichen Mühen, die alle FHEM Entwickler (und auch die ioBroker/DashUI/CCU.IO Leute) in meine SmartHome Lösung reingesteckt haben!

Viele Grüße,
   Heiko

rosenedi

Hallo,

hab den ioBroker an Fhem versucht anzubinden.

Die Werte konnte ich alle auslesen, allerdings ist bei der Instanz im IObroker
die Fehlermeldung not connected.

Kann mir da jemand weiterhelfen

Gruß
rosenedi

rosenedi

Hallo wieder,

hat sich erledigt. Hab die IP-Adresse falsch im IOBroker angelegt.

Es muß der Localhost 127.0.0.1 sein, da ja der IOBroker und FHEM auf dem gleichen Raspberry laufen.

Gruß

Archimedes

Hallo, wer hat denn schon Erfahrungen mit der Cloud von ioBroker ? Welche Devices lassen sich über das FHEM Modul einbinden ? Aktuell kann ich nur Homematic Schalter on/off integrieren, weder Heizungsthermostate noch Intertechno. Wer hat hier schon Erfahrungen ?
Was ist das Ziel ? Amazon Alexa in die Heimautomation zu integrieren.
Gruß Axel

IncMrG

Hallo Bluefox,

habe bei der Einbindung von FHEM in ioBroker das Problem das zwar alle Geräte (und meines erachten sogar viel zu viele) überspiel werden,
Aber diese danach nicht mit Leben gefüllt werden. Im LOG tauchen dafür jede Menge Warnungen auf:
Auszug aus dem LOG:

fhem.0 2017-02-22 02:40:58.750 warn Unknown event "CUL_HM HZ_1G_WZ_SW1 off"
fhem.0 2017-02-22 02:40:58.513 warn Unknown event "CUL_HM HZ_1G_WZ_SW1 set_off"
fhem.0 2017-02-22 02:40:47.009 warn Unknown event "CUL_HM HZ_1G_WZ_SW1 off"
fhem.0 2017-02-22 02:40:46.850 warn Unknown event "CUL_HM HZ_1G_WZ_SW1 set_off"
fhem.0 2017-02-22 02:40:46.847 warn Unknown event "CUL_HM HZ_1G_WZ_SW1 on"
fhem.0 2017-02-22 02:40:46.494 warn Unknown event "CUL_HM HZ_1G_WZ_SW1 set_on"
fhem.0 2017-02-22 02:40:37.193 warn Unknown event "CUL_HM HZ_1G_WZ_SW1 off"


Es können scheinbar die Werte nicht den Geräten zugeordnet werden. Daher findet, bei mir, keine sichtbare Kommunikation der Systeme nach dem ersten Anlegen mehr statt.

Ist Dir das Problem bekannt?

Grüße
Gerd
FHEM auf RPi mit Raspbian, CUL-SCC868, ASUS BT400, ASUS N10