Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues MQTT Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • TCr82
    antwortet
    Zitat von TCr82 Beitrag anzeigen
    Nur die Items mit dem Typ Dict werden nicht auf den Broker geschrieben
    Hi, hat auch jemand eine Idee zu meinem Problem? Irgendwas was man am Broker umstellen muß oder zufällig ein Fehler im Plugin (zb. bzgl. der Typumwandlung) oder einfach unsupported?

    Gruß

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Ja, nur wenn Du im eval
    Code:
    "(sh.eg.wohnen.licht.decke.dimmen())"
    schreibst, erhältst Du halt einen String mit Inhalt
    Code:
    (sh.eg.wohnen.licht.decke.dimmen())
    und nicht den Wert des Items.

    Du musst das schon ohne die Anführungszeichen machen und im eval Ausdruck einen String zusammenbauen, der genau eine String Representation des dicts enthält, also statt

    Code:
     {"state":"(sh.eg.wohnen.licht.decke.dimmen())"}
    so was wie:
    Code:
    {"state": sh.eg.wohnen.licht.decke.dimmen()}

    Einen Kommentar schreiben:


  • element
    antwortet
    Das habe ich. Ich muss aber gestehen, das ich erst lernen muss damit umzugehen. Ich hatte das Item falsch eingestellt.
    Der eval Syntax Checker gibt mir genau denselben Ausdruck zurück ohne ihn umzuwandeln. Und das es sich um ein dict handelt. Ich wusste nicht wie der Checker arbeitet, da er den Wert aber nicht umwandelt und er das wohl sollte mache ich also immer noch etwas falsch.
    Ich brauche einen Tip wo ich finde wie ich es richtig eingeben muss oder ein Beispiel.
    Ich habe bereits Sylvester und Neujahr nach einer Lösung gesucht und immer wieder probiert und smarthome immer wieder neu gestartet. Ich frage weil ich nicht weiter weiß, nicht um eure Geduld zu testen.
    Ich will mir eine Sprachsteuerung mit mehreren items bauen. Dazu benötige ich das das mqtt Plugin die payloads in dieser vorgegebenen Form liefert, " { "state":"itemwert"} " ohne die äußeren Gänsefüßchen. Bei bool items hatte ich mir geholfen indem ich mit If und else den kompletten Ausdruck evaluiert habe, jetzt benötige ich aber die Eingabe des itemwertes in die mqtt- payloads, und das bekomme ich nicht hin.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von element Beitrag anzeigen
    eval: {"state":"(sh.eg.wohnen.licht.decke.dimmen())"}
    Dein eval Ausdruck ist ungültig. Das hätte Dir auch der eval Syntax checker verraten, wenn Du den Ausdruck da mal eingegeben hättest.

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Zitat von element Beitrag anzeigen
    ich versuche verzweifelt ein mqtt_topic_out item, das über ein eval gefüllt wird zu bauen.
    ich vermute andere versuchen verzweifelt Deine Items zu entziffern. Bitte korrigiere doch Dein Posting gemäß der Anleitung hier um die Items richtig lesen zu können. Es gibt Leute, die helfen nur noch bei korrekten Posts ...

    Einen Kommentar schreiben:


  • element
    antwortet
    Hallo
    ich versuche verzweifelt ein mqtt_topic_out item, das über ein eval gefüllt wird zu bauen. Der broker ist mosquitto, der client auf der anderen Seite ist sepia- Sprachsteuerung.
    Sepia erwartet ein topic mit dem payload " {"state":"WERT"} ". Der WERT soll der des items sein welches auch "eval_trigger" ist.
    der Empfang von mqtt topics in smarthome klappt über ein Hilfsitem:

    Code:
    eg:
        wohnen:
            licht:
                decke:
                    dimmen:
                        type: num
                        visu_acl: rw
                        knx_dpt: '5'
                        knx_init: 1/1/174
                        knx_listen: 1/1/174
                        knx_send: 1/1/172
                        webservices_set: 'doorpi'
                        webservices_data: 'full'
    
                        mqtt_in:
                            type: dict
                            mqtt_topic_in: "sepia/smart-devices/wohnen/licht/decke/dimmen"
                            on_change:
                            - eg.wohnen.licht.decke.dimmen = value['state']
    
                        mqtt_out:
                            type: dict
                            mqtt_topic_out: "sepia/smart-devices/wohnen/licht/decke/dimmen"
                            eval: {"state":"(sh.eg.wohnen.licht.decke.dimmen())"}
                            eval_trigger: eg.wohnen.licht.decke.dimmen
    Ich benötige items für Temparaturwerte von Räumen und für Dimmer, die smarthome sendet.
    Wie bekomme ich es hin das " {"state":"(sh.eg.wohnen.licht.decke.dimmen())"} " der Wert eingefügt wird.
    Ich habe es bereits mit value oder auch mit {}.format... versucht.
    Auch der eval syntax prüfer hat nicht wirklich weiter geholfen.
    Klammern egal welcher Form, ebenso wie " oder ' habe ich an allen erdenklichen Stellen eingefügt.
    Manchmal startet die yaml Seite dann nicht ´.
    PS- tut mir leid mit den Einrückungen beim "code" das letzte mal als ich das nutzte funktionierte das noch ohne Umstellung.
    Zuletzt geändert von element; 02.01.2021, 22:03.

    Einen Kommentar schreiben:


  • TCr82
    antwortet
    Hi,
    ich versuche zwischen zwei shNG Instanzen auf verschiedenen Computern Daten für die Viessmann Heizung auszutauschen. Das klappt auch soweit ganz gut über das MQTT Plugin. Nur die Items mit dem Typ Dict werden nicht auf den Broker geschrieben - und zwar mit dem Dict für UZSU.

    Mit dem Tool MQTT Explorer sieht man auch, dass das Item einfach nicht geschrieben wird (es fehlt ganz schlicht).

    Mein Item sieht wie folgt aus:

    Code:
    technik:
        heizung:
            WW:
                Schaltzeiten:  
                    name: Schaltzeiten WW im UZSU dict Format
                    type: dict  
                    cache: yes
                    viess_timer: Timer_Warmwasser
                    viess_init: true
                    mqtt_topic_init: Heizung/WW/Schaltzeiten
                    mqtt_retain: true
    Im Logfile /usr/local/smarthome/var/log/smarthome-warnings.log ist auch kein Fehler vermerkt. Wenn ich über das Admin-Interface mir den Wert des Items ansehe ist dieser wie folgt:

    Code:
    {'lastvalue': '0', 'sunset': '16:37', 'list': [{'time': '04:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '1', 'active': True}, {'time': '04:30', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'active': True}, {'time': '07:30', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '1', 'active': True}, {'time': '09:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'active': True}, {'time': '14:30', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '1', 'active': True}, {'time': '15:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'active': True}, {'time': '17:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '1', 'active': True}, {'time': '22:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'active': True}], 'active': True, 'interpolation': {'initage': '', 'initialized': True, 'itemtype': 'bool', 'interval': '', 'type': 'none'}, 'sunrise': '08:23'}
    Nur wird er halt nicht hoch gemeldet. Ich bin nebenbei auf dem aktuellen developer.

    Gruß und ein frohes neues Jahr

    EDIT:

    Hab nebenbei diese Meldung hier in /var/log/mosquitto/mosquitto.log entdeckt, welche Regelmäßig geloggt wird:

    1609504860: Socket error on client heizung.MQTT-module, disconnecting.
    1609506138: Socket error on client heizung.MQTT-module, disconnecting.
    1609507133: Socket error on client heizung.MQTT-module, disconnecting.
    1609514825: Socket error on client heizung.MQTT-module, disconnecting.
    1609516643: Socket error on client heizung.MQTT-module, disconnecting.
    1609516865: Socket error on client heizung.MQTT-module, disconnecting.
    1609516982: Socket error on client heizung.MQTT-module, disconnecting.
    1609517040: Socket error on client heizung.MQTT-module, disconnecting.
    1609536940: Socket error on client heizung.MQTT-module, disconnecting.
    1609537580: Socket error on client heizung.MQTT-module, disconnecting.
    1609538800: Socket error on client heizung.MQTT-module, disconnecting.
    1609539689: Socket error on client heizung.MQTT-module, disconnecting.
    1609541183: Socket error on client heizung.MQTT-module, disconnecting.
    1609541277: Socket error on client heizung.MQTT-module, disconnecting.
    Aber nochmal der Hinweis, die anderen Werte funktionieren (werden sauber auf den Broker geschrieben), man sieht dies schön an den Temperatur Werten und den Pumpen Status usw... die Ständig aktualisieren. Auch bin ich die ganze Zeit per SSH auf beide PCs verbunden und kann ganz normal arbeiten - Ist also bestimmt kein Netzwerkproblem.
    Zuletzt geändert von TCr82; 02.01.2021, 00:31.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von danny Beitrag anzeigen
    Wie gibt man das in das Feld bool_values: richtig ein? Wenn ich es so eingebe:
    Anmerkung 2020-05-29 102312.png
    Wenn Du es so eingibst, erwartest Du dass der IOBroker nicht false und true sendet, sondern die Werte Falsch und Wahr. Normalerweise sollte der Wert leer bleiben, es sei denn, Du hast einen MQTT Device, welches andere Werte als false und true sendet (z.b: EIN/AUS, WAHR, FALSCH, ON/OFF, ...), die Du aber in ein Bool-Item einlesen möchtest.

    Einen Kommentar schreiben:


  • danny
    antwortet
    Hallo Msinn,

    habe alles gelesen was du geschrieben hast. Fehler 60 und evtl. ein Bug. (Fehler sitz 60cm vom Bidschirm entfernt.)

    Zitat von Msinn Beitrag anzeigen

    Dann MUSST Du bool_values: 'false','true' weg lassen.
    Habe ich gemacht! Das Problem ist wenn man in der Admin Weboberfläche im Feld bool_values etwas eingegeben hat (reboot vom Sytem), es dann wieder löscht(in der Admin Oberfläche) dann bleibt es in der etc.yaml stehen.

    Code:
    %YAML 1.1
    ---
    # etc/module.yaml
    http:
        module_name: http
        starturl: admin
    
    admin:
        module_name: admin
    
    mqtt:
        module_name: mqtt
        broker_host: 192.168.1.2
        broker_port: 1883
        broker_monitoring: true
        birth_topic: Smarthome_birth_topic
        birth_payload: Smarthome_ist_gebohren
        qos: 1
        [COLOR=#c0392b]bool_values: ''[/COLOR]
    Wenn man das bool_values: '' aus der etc.yaml löscht neu startet dann funktioniert alles wie gewünscht.

    So jetzt noch mal bitte zu meiner Frage:

    Wie gibt man das in das Feld bool_values: richtig ein? Wenn ich es so eingebe:
    Anmerkung 2020-05-29 102312.png


    Habe einmal "true" geschalten dann kommt garnix im Broker an. (Aktualisieren hab ich gedrückt)
    Hier würde ich jetzt aber "Wahr" erwarten.
    Anmerkung 2020-05-29 103316.png



    Dann habe ich "false" geschalten:
    Dann kommt beim Broker als payload:

    '['Falsch','Wahr']'

    und der Raw wert: 3991397097108115991043944398797104114399339

    Anmerkung 2020-05-29 103842.png
    hier würde ich aber nur ein "Falsch" als Payload erwarten.

    Verstehe ich da was falsch?

    Danke für deine Geduld und Hilfe.

    Gruß Danny



    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Hast Du gelesen was ich geschrieben habe?

    Einen Kommentar schreiben:


  • danny
    antwortet
    Anmerkung 2020-05-28 142826.png

    Wenn ich jetzt nur "false" bei bool_values eingebe und wenn ich in meinen Items im SmarthomeNG "false" und "true" schalte dann geht die Lampe aus bei "false" und bei "true" passiert nix.

    Wenn ich jetzt nur "true" bei bool_values eingebe und wenn ich in meinen Items im SmarthomeNG "false" und "true" schalte dann geht die Lampe an bei "false" und bei "true" passiert nix..

    ???

    Wenn ich kein true und false eingebe passiert garnichts auf dem MQTT Broker.
    Muss jetzt erst mal in die Spätshicht.
    Danke erst mal. wegen den 5 Fragen. Die hab ich doch beantwortet. teils mit Bildern.


    Gruß Danny
    Zuletzt geändert von danny; 28.05.2020, 13:43.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Im MQTT Explorer hast Du die Payload als json anzeigen lassen. Ist sie in der Raw Anzeige auch 'false'?

    UND: Wer ist Sender des Pakets gewesen? IOBroker oder war das ein Schaltversuch aus SmartHomeNG?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Zitat von danny Beitrag anzeigen
    Das geplante Setup hat mit smarthomeNG v1.6b schon funktioniert.
    Dann MUSST Du bool_values: 'false','true' weg lassen. Diese Option ist neu in v1.7 und wenn es in 1.6 gibt es die Möglichkeit gar nicht.
    --> 1.6b bedeutet Du warst auf dem develop branch. Jetzt bist Du anscheinend auf dem master (sonst wäre die mqtt Plugin Version v2.0.1)

    Du schickst mir viele Bilder aus Tools/Systemen die ich nicht kenne. Ich habe nicht die Zeit mich da einzulesen. Kannst Du einfach erstmal meine 5 Fragen beantworten?

    Einen Kommentar schreiben:


  • danny
    antwortet
    Anmerkung 2020-05-28 140651.png

    Einen Kommentar schreiben:


  • danny
    antwortet
    Das geplante Setup hat mit smarthomeNG v1.6b schon funktioniert. Ich habe lediglich einen neuen Container mit smarthomeNG v1.7.1 angelegt und alles wieder so übernommen wie vorher. Bis auf das MQTT Plugin ohne alle Parameter wie vorher und das Plugin im Admininterface hab ich alles wie im unten im module.yaml geändert.

    Zur info: MQTT Explorer ist das gleiche wie MQTTBox.

    Das Topic ist:

    Licht_Florian_Bett_Bool

    siehe oben meine florian.yaml

    mqtt_topic: Licht_Florian_Bett_Bool

    und der Payload ist:

    true oder false

    mehr nicht.


    hier die module.yaml

    Code:
    %YAML 1.1
    ---
    # etc/module.yaml
    http:
        module_name: http
        starturl: admin
    
    admin:
        module_name: admin
    
    mqtt:
        module_name: mqtt
        broker_host: 192.168.1.2
        broker_port: 1883
        broker_monitoring: true
        bool_values: 'false','true'
        last_will_topic: SmarthomeNG Stop
        birth_topic: SmarthomeNG Start
    plugin.yaml
    Code:
    mqtt:
        plugin_name: mqtt
        broker_monitoring: true
    hier ein Screenshot von IOBroker von dem bool vom Florian:


    Anmerkung 2020-05-28 131629.png


    OK die Punkte hier:

    Wo hast Du was gestartet?
    Die Software MQTTBox auf meinem Dell Rechner.

    Woher hast Du die Nachrichten bekommen?
    Die ersten 2 Protokolle kommen vom Broker beim Start weil sie retain sind.

    Anmerkung 2020-05-28 134438.png
    Wie schaltest Du?

    Wenn ich ein true oder false im MQTT Explorer bei PUBLISH eingebe und Topic Licht_Florian_Bett_Bool auswähle.
    Dann geht die Lampe ein oder aus wie gewünscht.

    Wenn ich aber das im SmarthomeNG Admininterface mache dann kommt nur bei "false" eine leere Meldung und bei "true" kommt garnichts imm MQTT Broker an.

    Anmerkung 2020-05-28 134950.png
    Anmerkung 2020-05-28 135030.png


    Woher kommen die Messages wo false drüber steht?

    Vom Broker beim Start.

    Wer interpretiert, dass die raw Payload "false" bedeutet?

    keine Ahnung?

    Wenn Du beim Einschalten 2 Messages bekommen hast und 2x an und 2x aus geschaltet hast, müsstest Du 6 MQTT Messages haben und nicht 4.

    Ja ich bekomme ja 2 Retain beim start und nur wenn ich "false" im smarthomeNG schalte eine Message.
    2x Retain + 2x false +0x true = 4 MQTT Messages
    Zuletzt geändert von danny; 28.05.2020, 13:03. Grund: Schreibdepp.

    Einen Kommentar schreiben:

Lädt...
X