Seite 1 von 2

[V3.5.1] MQTT String wird abgeschnitten / Problem bei Logik (WD-2201)

Verfasst: Di Nov 08, 2022 4:16 pm
von 0lek
Use case:

1. Home Assistant als Visu "bastelt" eine cron expression
2. Die geht ueber MQTT and TWS
3. Wird dann als Input in eine Logik fuer den Cron-Baustein verwendet.

Leider wird die Expression abgesschnitten:

Code: Alles auswählen

/**
 * New custom logic
 *
 * 
 */

{
  "_Meta": { // Optional
    "Description": "",
    "Version": "1.00",
    "Icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgdmlld0JveD0iMCAwIDUxMiA1MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxjaXJjbGUgc3R5bGU9ImZpbGw6I0Y4RTk5QjsiIGN4PSIyNTIuMjc4IiBjeT0iMjU1Ljk5OCIgcj0iMjUyLjI3OCIvPg0KPHBhdGggc3R5bGU9ImZpbGw6I0Y2RTI3RDsiIGQ9Ik0yNTIuMjc4LDMuNzI0VjUwOC4yOGMxMzkuMzI5LDAsMjUyLjI3OC0xMTIuOTQ5LDI1Mi4yNzgtMjUyLjI3OFMzOTEuNjA4LDMuNzI0LDI1Mi4yNzgsMy43MjR6Ii8+DQo8cGF0aCBzdHlsZT0iZmlsbDojQTU4ODY4OyIgZD0iTTE1OS4zMzQsMzI5LjAzYy0zMC45MDEsMC02MC43NjItMTQuNzUyLTYyLjAxOC0xNS4zODFsMTcuNzcyLTM1LjY0OA0KCWMwLjIyNywwLjExMiwyMi45MDYsMTEuMTk2LDQ0LjI0NiwxMS4xOTZjMjEuMjU5LDAsNDMuOTgtMTEuMDYzLDQ0LjIwNC0xMS4xNzVsMTcuODEzLDM1LjYyNw0KCUMyMjAuMDk2LDMxNC4yNzgsMTkwLjIzNSwzMjkuMDMsMTU5LjMzNCwzMjkuMDN6Ii8+DQo8cGF0aCBzdHlsZT0iZmlsbDojOTQ3ODU5OyIgZD0iTTM0NS4yMjMsMzI5LjAzYy0zMC45MDEsMC02MC43NjItMTQuNzUyLTYyLjAxOC0xNS4zODFsMTcuNzcyLTM1LjY0OA0KCWMwLjIyNywwLjExMiwyMi45MDYsMTEuMTk2LDQ0LjI0NiwxMS4xOTZjMjEuMjU5LDAsNDMuOTgxLTExLjA2Myw0NC4yMDQtMTEuMTc1bDE3LjgxNCwzNS42MjcNCglDNDA1Ljk4NSwzMTQuMjc4LDM3Ni4xMjQsMzI5LjAzLDM0NS4yMjMsMzI5LjAzeiIvPg0KPHBhdGggc3R5bGU9ImZpbGw6I0E1ODg2ODsiIGQ9Ik0yNTIuMjc4LDQzNS4yNTJjLTE0LjY0MywwLTI2LjU1Ni0xMS45MTMtMjYuNTU2LTI2LjU1NmMwLTE0LjY0MywxMS45MTMtMjYuNTU2LDI2LjU1Ni0yNi41NTYNCgljMTQuNjQ1LDAsMjYuNTU2LDExLjkxMywyNi41NTYsMjYuNTU2QzI3OC44MjksNDIzLjM0MiwyNjYuOTE2LDQzNS4yNTIsMjUyLjI3OCw0MzUuMjUyeiIvPg0KPGc+DQoJPHBvbHlnb24gc3R5bGU9ImZpbGw6IzM4NjJDQzsiIHBvaW50cz0iMjc4LjgzNCwyMjIuODEgMTkyLjUyOCwyMjIuODEgMTc4LjQ0NiwxODguODExIDIyNC4xMTIsMTQzLjE0MyAxODUuODg5LDE0My4xNDMgDQoJCTE4NS44ODksMTAzLjMxIDI3Mi4xOTUsMTAzLjMxIDI4Ni4yNzcsMTM3LjMxIDI0MC42MTEsMTgyLjk3NyAyNzguODM0LDE4Mi45NzcgCSIvPg0KCTxwb2x5Z29uIHN0eWxlPSJmaWxsOiMzODYyQ0M7IiBwb2ludHM9IjM5MS42OTUsMTk2LjI1MiAzMDUuMzg5LDE5Ni4yNTIgMjkxLjMwNywxNjIuMjUzIDMzNi45NzMsMTE2LjU4NSAyOTguNzUxLDExNi41ODUgDQoJCTI5OC43NTEsNzYuNzUyIDM4NS4wNTYsNzYuNzUyIDM5OS4xMzksMTEwLjc1MiAzNTMuNDcyLDE1Ni40MTggMzkxLjY5NSwxNTYuNDE4IAkiLz4NCgk8cG9seWdvbiBzdHlsZT0iZmlsbDojMzg2MkNDOyIgcG9pbnRzPSI1MDQuNTU2LDE2OS42OTYgNDE4LjI1MSwxNjkuNjk2IDQwNC4xNjgsMTM1LjY5NyA0NDkuODM1LDkwLjAyOSA0MTEuNjEyLDkwLjAyOSANCgkJNDExLjYxMiw1MC4xOTYgNDk3LjkxOCw1MC4xOTYgNTEyLDg0LjE5NyA0NjYuMzM0LDEyOS44NjMgNTA0LjU1NiwxMjkuODYzIAkiLz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjwvc3ZnPg0K"
  },
  "Input": [
      ["Enable ","Enable this logic","$Enable","c"],
      ["Trigger time","Time at which to trigger logic","$CronExpr","c"]
  ],
  "Output": [
      ["Scene","scene","$OutScene","ct"],
      ["Next trigger","When will this be triggered next?","$NextTrigger","c"]
  ],
  "Level": [
      ["$Enable","bool",true],
      ["$CronExpr","string","0 30 19 * * 0,1,2,3,4,5,6"], // Fall back to 19:30
      ["$OutB","bool",false],
      ["$NextTrigger","integer",0],
      ["$SceneNum","integer",6],
      ["$OutScene","integer",999]
  ],
  "Module": [
      ["Cron","$Enable","$OutB","$NextTrigger","$CronExpr"], // Trigger OutB when the time has come
      ["Latch","$SceneNum","$OutScene","$OutB",0] // Push $SceneNum to $OutScene when $OutB tru
  ]
}
MQTT:

Bild

LOGIK:

Bild

Man sieht ja schoen dass der Timestamp erst Sonntag ist, aber die cron expression die der TWS bekommt jeden Tag aktiv ist. Das ist weil irgendwo alles nach der 0 abgeschnitten wird.

Hilfe?

Danke
Aleksander

Re: [3.5.1] MQTT String wird abgeschnitten

Verfasst: Do Nov 10, 2022 9:39 am
von 0lek
Keiner eine Idee? :(:(:(

@ms20de, @StefanW ?

Weil leider ist das jetzt nicht benutzbar fuer mich.

Danke
Aleksander

Re: [3.5.1] MQTT String wird abgeschnitten

Verfasst: Do Nov 10, 2022 10:33 am
von blaubaerli
Hallo Aleksander,

so wie ich das verstanden habe, ist der initiale Wert bei der Definition des Levels auf einen langen Wert zu setzen. Also z.B. auf „XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX“

Sodass du dort mindesten deinen längstmöglichen technisch notwendigen String definierst.

Wenn sich dann der Inhalt des Levels innerhalb der Logik ändert, stört das dann nicht.

Probier das mal.

Beste Grüße
Jens

Re: [3.5.1] MQTT String wird abgeschnitten

Verfasst: Do Nov 10, 2022 10:38 am
von 0lek
@blaubaerli Danke. Aber m.E. nach ist das ja getan mit:

Code: Alles auswählen

["$CronExpr","string","0 30 19 * * 0,1,2,3,4,5,6"]
Und der String hier ist ja LAENGER als der, der im Objekt MQ1 ankommt.

Re: [3.5.1] MQTT String wird abgeschnitten

Verfasst: Do Nov 10, 2022 11:09 pm
von ms20de
Hallo Aleksander,

das Problem scheint in der Logik zu liegen, auf der Seite von MQTT sehe ich keine Probleme.
Der String-Eingang welcher hier fix einmal vorkommt, scheint sich anderes zu verhalten als die Eingänge die man variabel hinzufügen kann.
Muss ich klären.

Viele Grüße,
Matthias

Re: [3.5.1] MQTT String wird abgeschnitten

Verfasst: Fr Nov 11, 2022 12:38 pm
von 0lek
@ms20de Matthias, danke fuers gucken.

Aber ist der String nicht schon im ersten Screenshot abgeschnitten? M.E. nach (wobei Du natuerlich alles besser verstehst ;)) kommt der String ganz bei MQTT an und wird dann beim "ueberspielen" in das MQ1 Objekt abgeschnitten. Weil guck mal - ich habe jetzt die Transaction geloescht, nochmal eingestellt und nochmal den String uebergeben, ohne das an eine Logik zu binden:

Bild
Bild
Im mouse-over sehe ich ja den "full value". Und der ist schon hier abgeschnitte, BEVOR das ueberhaupt an eine Logik geht!

Danke fuers kuemmern und Gruesse,
Aleksander

Re: [3.5.1] MQTT String wird abgeschnitten

Verfasst: Fr Nov 11, 2022 4:23 pm
von StefanW
Hi Aleksander,

wir speichern nur bis 14 Stellen für die Anzeige auf der Oberfläche, intern würden auch Megabyte vom Dispatcher weitergereicht.

Man kann also aus der Oberfläche her nicht sagen, wo was abgeschnitten wird.

Stefan

Re: [3.5.1] MQTT String wird abgeschnitten

Verfasst: Fr Nov 11, 2022 6:55 pm
von ms20de
0lek hat geschrieben: Fr Nov 11, 2022 12:38 pm @ms20de Matthias, danke fuers gucken.

Aber ist der String nicht schon im ersten Screenshot abgeschnitten?
Ja, es sieht so aus, ist aber nicht so. Wir haben die drei Punkte hinzugefügt, damit man erkennen kann dass der String noch länger ist. Die kurze Zwischenspeicherung des letzten Objektwertes für die Anzeige ist aus Performancegründen, damit der Timberwolf auch locker mit 100.000 Objekten umgehen kann. Dass da in diesem Fall Full Value steht ist etwas unglücklich und sollten wir ändern.

Wenn du es selbst testen möchtest, was auch für die Fehlersuche hilfreich sein kann: Zeichenketten können auch in eine Zeitserie geschrieben werden. Einfach das Ergebnis von MQTT mit neuer Zeitserie verknüpfen und in Grafana öffnen, beides direkt im Verknüpfungsmanager (DOS) möglich. In Grafana die Visualisierung auf Tabelle umstellen.

Viele Grüße,
Matthias

Re: [3.5.1] MQTT String wird abgeschnitten

Verfasst: So Nov 13, 2022 1:25 pm
von 0lek
Matthias,

Danke, macht Sinn. War nicht ganz klar. Ich hab's mit Grafana getestet, und es stimmt - die Cron Expression kommt absolut richtig in der Logik an (bzw. in dem MQ1 obiekt). D.h. irgendwas in der Logik scheint nicht zu stimmen.

Soll ich sonst noch was testen?

Aleksander

Re: [3.5.1] MQTT String wird abgeschnitten / Problem bei Logik (WD-2201)

Verfasst: Mo Nov 14, 2022 6:15 pm
von ms20de
Hallo Aleksander,

Bild

mein Kollege hat das Problem gefunden. Der Fix wird voraussichtlich in der Insider Version 2 für die 4.0 enthalten sein.

Viele Grüße,
Matthias