NEWS
Mqtt best practice
-
@mickym schon mal meinen Weg probiert? siehe Post vorher... Damit konnte ich allen fehlenden Datenpunkte im 5er Admin anlegen. Kein Aufwand und man sieht gleich, ob der Befehl stimmt...
RUDI
-
@barnie2017 sagte in Mqqt best practice:
Damit konnte ich allen fehlenden Datenpunkte im 5er Admin anlegen
RUDI
wieviel DP brauchst denn eigentlich?
ich dachte ja damit wird's einfacherwenn ich 50 Shelly habe...puhh.
Ich merke erst jetzt welche Service so eine Adapter ist -
@barnie2017 Das ist schon logisch - Du kannst über jeden Client alle Topics publishen
- Dafür brauchst aber einen extra Client, den man eigentlich nicht braucht, wenn der Admin 5 hier nicht dazwischen funken würde.
-
@dos1973 Wie gesagt stell auf die alte Oberfläche um und erstelle die Datenpunkte das geht schon. In 20 Minuten bist fertig und ist nur Einmalaufwand.
-
@mickym sagte in Mqqt best practice:
0.command
ich habe genau das befolgt, meine ich zumindest.
ich habe "relay" Markiert dann + "0.command"
aber es wird immer ein Verzeichnis angelegt -
.command habe ich verstanden
was macht den Set und Status?
-
@dos1973 OK - dann muss man den relay Datenpunkt als Folder definieren. Kannst Du mal schauen, ob das Stiftsymbol hinter dem relay DP steht?
-
@mickym
nein, relay hat nur den Mülleimer -
@dos1973 status musst nicht anlegen.
Wie gesagt schau Dir die Doku ggf. an.
Wenn Du einen Dimmer hast dann dimmst Du über das set Kommando diesen.Den Vorteil, den Du mit reinem MQTT-hast, ist dass Du nicht wie beim Shelly Adapter darauf warten musst, dass das Gerät mit den entsprechenden Funktionen implementiert wird.
- So um das Problem mit den fehlenden Objekten im mqtt Adapter zu lösen, lass mal folgendes Skript laufen:
/** * Zweck: Korrigiert übergeordnete Ordnerstrukturen eines Datenpunkts * Datum: 07.08.2021 * Autor: @fastfoot */ // In den Settings der Javascript-Instanz muss setObject erlaubt sein!!! let arr = [], id = ''; const ids = $('mqtt.0.*'); ids.each(idTmp => { arr=idTmp.split('.'); arr.splice(arr.length-1); id=arr.join('.'); if(arr[0] === '0_userdata' || arr[0] === 'alias' || arr[0] === 'mqtt' || arr[0] === 'javascript'){ correctObject(id, arr); } }) function correctObject(id,arr){ if(arr.length === 2) return; if(!existsObject(id)){ let obj = {}; obj = { type: 'folder', common:{ name: arr[arr.length - 1] } } extendObject(id, obj, e => { if (e) log('Fehler beim Schreiben des Objektes: '+ id + ' ' + e); }) } arr.splice(arr.length - 1); id = arr.join('.'); correctObject(id, arr); }
Empfehle Dir aber zum Erstellen erst mal auf admin4 umzustellen (bleibt ja der Admin5 Adapter nur mit alter Oberfläche - kannst ja dann wieder umstellen).
-
@mickym sagte in Mqqt best practice:
Den Vorteil, den Du mit reinem MQTT-hast, ist dass Du nicht wie beim Shelly Adapter darauf warten musst, dass das Gerät mit den entsprechenden Funktionen implementiert wird.
das ist genau der Grund warum ich das machen wollte.
command und Set habe ich auch begriffen...
ich brauche nochmals ein Bsp für den Status?
und ich weiß leider nicht wieder der admin von 5 auf 4 gewechselt werden kann, lese ich heute das erste mal.
btw. Vielen Dank für deine Hilfestellung!
-
@dos1973 Gehe auf Instanzen und in die Einstellungen Deiner Admin Instanz:
Mach den Haken Alte Benutzeroberfläche an, dann BrowserrefreshDann legst die Datenpunkte wie früher an.
Dann machst den Haken wieder raus und hast wieder die Admin5 Oberfläche.Anschließend lässt Du das Skript drüber laufen, das legt dann aus den fehlenden Objekten Verzeichnisobjekte an.
Status meldet der Shelly von selbst den brauchst nicht anlegen. Über den Status sendet der Shelly einen JSON mit Einstellungen
Den status scheint es nur bei dem DImmer zu geben.
-
@mickym
Ok, danke erstmal. Das kann ich erst morgen wieder versuchen.Melde mich morgen abend nochmals
Noch eine Frage:
Das script führe ich script Adapter aus? -
Falls Dich das interessiert, hier habe ich die Problematik mit dem Admin5 und mqtt ausführlich diskutiert:
https://forum.iobroker.net/topic/46851/datenpunkte-allgemein-und
und gibt inzwischen auch ein github issue
https://github.com/ioBroker/ioBroker.admin/issues/1067
Ich hoffe nur nicht - dass das Prio 99 bekommt, da nur als "Enhancement" und nicht als Bug akzeptiert.
-
@dos1973 sagte in Mqqt best practice:
Noch eine Frage:
Das script führe ich script Adapter aus?Ja unter Scripts
-
@mickym
ich muss nochmals fragen, was das script macht?!?nachdem ich den admin vom 5 auf 4 umgestellt habe, kann ich die states anlegen welche ich benötige. ich hab zwar das script ausgeführt - aber ich habe nicht verstanden warum ich das machen muss.
bei shelly 2.5 als Rollo habe ich jetzt noch diese DP angelegt
mqtt.0.shellies.Wohnzimmer_Rollo_links.roller.0.command.pos
command: für hoch/runter/stop
pos: für die genaue Positionsfahrtmir gefällt nicht so gut dass ich states manuell anlegen muss um die gerate zu steuern.
Wenn ich irgendwann mal eine Baum lösche und vergesse mir zu notieren was da war, dann geht die Suche wieder los... -
@dos1973 sagte in Mqqt best practice:
@mickym
ich muss nochmals fragen, was das script macht?!?nachdem ich den admin vom 5 auf 4 umgestellt habe, kann ich die states anlegen welche ich benötige. ich hab zwar das script ausgeführt - aber ich habe nicht verstanden warum ich das machen muss.
Das Skript legt fehlende Objekte an, die erst seit Admin5 nötig sind. Das heißt, wo vorher das Stift-Symbol gefehlt hat (hast Du ja bestätigt), sollte nun ein Stiftsymbol vorhanden sein.
Dann ist relay nun auch als Objekt Verzeichnis und Du solltest nun wie von mir ursprünglich beschrieben durch Markieren des relay Datenpunktes über das + Datenpunkte hinzufügen können.
Das Skript legt also bei fehlende Objekten, Objekte vom Typ "Folder" an.bei shelly 2.5 als Rollo habe ich jetzt noch diese DP angelegt
mqtt.0.shellies.Wohnzimmer_Rollo_links.roller.0.command.pos
command: für hoch/runter/stop
pos: für die genaue PositionsfahrtJa das passt:
mir gefällt nicht so gut dass ich states manuell anlegen muss um die gerate zu steuern.
Wenn ich irgendwann mal eine Baum lösche und vergesse mir zu notieren was da war, dann geht die Suche wieder los...Nun das ist generell bei mqtt so. Es werden nur die Topics geschrieben, die auch veröffentlicht wurden und ein Gerät veröffentlicht nicht die Topics auf die es hört, da dies zu einer Endlosschleife führen würde.
Generell empfiehlt es sich, dass Du ggf. noch Aliase anlegst, damit hast Du auch dokumentiert, welche Datenpunkte Du zum steuern verwendest und kannst die Geräte im Fall eines Austauschs einfach austauschen.
Du kannst ja auch jeden Shelly Typ - die Objektstruktur exportieren, um quasi eine Vorlage zu haben.
Wenn Du willst kannst Dir ja auch ein kleines Script schreiben, dass Dir über den mosquitto Client alle Datenpunkte anlegt oder Du legst die Datenpunkte über Deine Logikmaschine an, wenn das geht.
Im NodeRed kannst zum Beispiel einfach angeben, dass Datenpunkte erstellt werden, wenn sie nicht existieren.
Alles nur ein paar Anregungen. Und wie gesagt ist ja nur Einmalaufwand.
-
das mit den Skripten ist so eine Sache
bin da nicht so bewandert.das mit den Alias wäre natürlich jetzt noch am Anfang sinnvoll... muss ich mir auch mal ansehen, welches da der beste Adapter ist, da gibts ja, meine ich auch inzwischen verschiedene Optionen.
-
@dos1973 Ich kann Dir nur den empfehlen, der wirklich mit dem Alias arbeiten und würde von dem anderen Adapter abraten.
- Ohne jetzt Namen zu nehmen.
Dieser Adapter legt wirkliche Aliase unter alias.0 an und damit werden wirklich die Systemfunktionen genutzt und nicht Funktionen in dem Adapter selbst - wie das die Konkurrenz macht.
Über den Alias kannst dann auch solche Übersetzungen realisieren, dass Du zum Beispiel ON in true und OFF in false übersetzen lassen kannst, wenn Dir das sinnvoll erscheint:
-
Ich habe aber gerade gesehen, dass Du bei Deinen Shellies sowieso eigene mqtt-Prefixe nutzt. Also Küche etc..
Dann brauchst eigentlich keinen Alias. Wenn Du tatsächlich mal ein Gerät austauschen musst, dann kannst Du ja den gleichen Prefix wieder verwenden und musst weder in Deinen Logikmaschinen noch in Deiner Visualisierung was ändern.
-
@mickym
auch so einer der spät basteltja, ich bin noch am ausprobieren und hab da mal mit den Prefixen rumprobiert.
ich weiß eben noch nicht was mir u.U. Vorteile / Nachteile bringt. spiele derzeit auch mit dem Alias Adapter