NEU! Release Candidate 1 zur V4 verfügbar!
NEU! Kamera Widget & Pegelsteller Widget
Infos im Wiki: https://elabnet.atlassian.net/l/cp/FNDRv2Xu

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin im wenigen Tagen. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[TIPP] Zähler Universalbaustein

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

Ersteller
Robosoc
Reactions:
Beiträge: 1887
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 639 Mal
Danksagung erhalten: 779 Mal

Zähler Universalbaustein

#1

Beitrag von Robosoc »

[edit 13.11.2023] Aktueller Entwicklungs-Versionsstand des Logikmoduls ist V6. Gepostet in Beitrag 52


Angeregt durch diese Diskussion hier: viewtopic.php?f=26&t=3772 habe ich einen Logikbaustein geschrieben der Folgendes machen soll (in V1 nicht ausgiebig getestet)

Ein beliebiger, kontinuierlicher Verbrauchszähler lieftert den einzigen Inputwert.
Es gibt diverse Ausgänge, die zu unterscheidlichen Zeiten geschrieben werden:
Grundsätzlich gibt es 4 Perioden
  1. Tageswerte (gemessen von 23:59:59 des Vortages bis 23:59:59 des aktuellen Tages)
  2. Wochenwerte (gemessen von und bis 23:59:59 von zwei aufeinanderfolgenden Samstagen)
  3. Monatswerte (gemessen jeweils zwischen 23:59:59 der letzten Tage zweier aufeinanderfolgender Monate, wobei bei Februar immer nur der 28 genommen wird. In Schaltjahren zählt der 29 daher in diesem Baustein in V1 zum März!)
  4. Jahreswerte (gemessen jeweils zwischen 23:59:59 des 31.12. zweier aufeinanderfolgender Monate)
und je Periode 3 Ausgabewerte
  1. Aktueller Verbrauch = Verbrauch seit Start der Periode bis JETZT (wird immer geschrieben, wenn sich der Zählereingang ändert)
  2. Verbrauch der letzten abgeschlossenen Periode (wird immer nur geschrieben, wenn eine Periode abgeschlossen wird, also um 23:59:59 des Enddatums der Periode, so wird der Wert beispielsweise immer noch Periodengerecht in eine Zeitreihe geschrieben).
  3. Zählerstand zum Ende der letzten Periode (wird auch nur zum Ende der Periode geschrieben, wie B. )
Das Verhalten ist momentan je Periode so eingestellt (oder sollte so eingestellt sein), dass Werte erst geschrieben werden, sobald eine Vorperiode geendet ist. Also wird man erst Tages-Werte sehen, wenn nach dem Speichern der Logik ein Tag abgeschlossen wurde...also am nachfolgenden Tag.
für längere Perioden entsprechend später.

Code: Alles auswählen

/**
* Zähler Universalbaustein V1
* Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.
*/

{
  "Input":[
    ["Zähler","Kontinuierlicher Zähler","$Counter","A"]
  ],
  "Output":[
    ["Zähler Tag","Zählerstand zu Beginn des aktuellen Tages","$End_D","X"],
	["Zähler Woche","Zählerstand zu Beginn der aktuellen Woche","$End_W","X"],
	["Zähler Monat","Zählerstand zu Beginn des aktuellen Monats","$End_M","X"],
    ["Zähler Jahr","Zählerstand zu Beginn des aktuellen Jahres","$End_Y","X"],
    ["Verbrauch VorTag","Verbrauch des letzten Tages","$Consumption_PrevD","X"],
    ["Verbrauch VorWoche","Verbrauch der letzten Woche","$Consumption_PrevW","X"],
    ["Verbrauch VorMonat","Verbrauch des letzten Monats","$Consumption_PrevM","X"],
    ["Verbrauch VorJahr","Verbrauch des letzten Jahres","$Consumption_PrevY","X"],
    ["Verbrauch Aktueller Tag","Verbrauch des aktuellen Tages","$Consumption_CurrD","C"],
    ["Verbrauch Aktuelle Woche","Verbrauch der aktuellen Woche","$Consumption_CurrW","C"],
    ["Verbrauch Aktueller Monat","Verbrauch des aktuellen Monats","$Consumption_CurrM","C"],
    ["Verbrauch Aktuelles Jahr","Verbrauch des aktuellen Jahres","$Consumption_CurrY","C"]
  ],
  "Level":[
    ["$Counter","float",0.0],
	["$End_D","float",0.0],
	["$End_W","float",0.0],
	["$End_M","float",0.0],
	["$End_Y","float",0.0],
	["$Consumption_PrevD","float",0.0],
	["$Consumption_PrevW","float",0.0],
	["$Consumption_PrevM","float",0.0],
	["$Consumption_PrevY","float",0.0],
	["$Consumption_CurrD","float",0.0],
	["$Consumption_CurrW","float",0.0],
	["$Consumption_CurrM","float",0.0],
	["$Consumption_CurrY","float",0.0],
	["$SendCond_D","bool",false],
	["$SendCond_W","bool",false],
	["$SendCond_M","bool",false],
	["$SendCond_M1","bool",false],
	["$SendCond_M2","bool",false],
	["$SendCond_M3","bool",false],
	["$SendCond_Y","bool",false],
	["$Cron_D","string","59 59 23 * * *"],
	["$Cron_W","string","59 59 23 * * 6"],
	["$Cron_M1","string","59 59 23 31 1,3,5,7,8,10,12 *"],
	["$Cron_M2","string","59 59 23 30 4,6,9,11 *"],
	["$Cron_M3","string","59 59 23 28 2 *"],
	["$Cron_Y","string","59 59 23 31 12 *"],
	["$Formula","string","X2>0?X1-X2:0"],
	["$Gate","bool",true]	
  ],
  "Module":[
  //Tageswerte schreiben
	["CalcFormula",["$Counter","$End_D"], "$Consumption_CurrD", "$Formula"],
	["Comparator" , "$End_D" , "$Gate" , 0],
	["Cron","$Gate","$SendCond_D",0,"$Cron_D"],
	["Latch","$Counter","$End_D","$SendCond_D",1],
	["Latch","$Consumption_CurrD","$Consumption_PrevD","$SendCond_D",1],
	["SendExplicit","$SendCond_D","$End_D",0],
	["SendExplicit","$SendCond_D","$Consumption_PrevD",0],
	
  //Wochenwerte schreiben
	["CalcFormula",["$Counter","$End_W"], "$Consumption_CurrW", "$Formula"],
	["Comparator" , "$End_W" , "$Gate" , 0],
	["Cron","$Gate","$SendCond_W",0,"$Cron_W"],
	["Latch","$Counter","$End_W","$SendCond_W",1],
	["Latch","$Consumption_CurrW","$Consumption_PrevW","$SendCond_W",1],
	["SendExplicit","$SendCond_W","$End_W",0],
	["SendExplicit","$SendCond_W","$Consumption_PrevW",0],
	
  //Monatswerte schreiben
	["CalcFormula",["$Counter","$End_M"], "$Consumption_CurrM", "$Formula"],
	["Comparator" , "$End_M" , "$Gate" , 0],
	["Cron","$Gate","$SendCond_M1",0,"$Cron_M1"],
	["Cron","$Gate","$SendCond_M2",0,"$Cron_M2"],
	["Cron","$Gate","$SendCond_M3",0,"$Cron_M3"],
	["Or",["$SendCond_M1","$SendCond_M2","$SendCond_M3"],"$SendCond_M"],
	["Latch","$Counter","$End_M","$SendCond_M",1],
	["Latch","$Consumption_CurrM","$Consumption_PrevM","$SendCond_M",1],
	["SendExplicit","$SendCond_M","$End_M",0],
	["SendExplicit","$SendCond_M","$Consumption_PrevM",0],
	
  //Jahreswerte schreiben
	["CalcFormula",["$Counter","$End_Y"], "$Consumption_CurrY", "$Formula"],
	["Comparator" , "$End_Y" , "$Gate" , 0],
	["Cron","$Gate","$SendCond_Y",0,"$Cron_Y"],
	["Latch","$Counter","$End_Y","$SendCond_Y",1],
	["Latch","$Consumption_CurrY","$Consumption_PrevY","$SendCond_Y",1],
	["SendExplicit","$SendCond_Y","$End_Y",0],
	["SendExplicit","$SendCond_Y","$Consumption_PrevY",0]
  ]
}
Wichtig ist es hier den Persistenzmodus der Logikzelle anzuschalten, also das Unendlichkeitszeichen anzuklicken.
Bei den ersten 8 Ausgängen kann man das Sendeverhalten nicht einstellen, dass ist korrekt so und liegt daran, dass das Schreiben dieser Werte zum Beschreiben von Zeitreihen erzwungen werden.

Bild
Zuletzt geändert von Robosoc am Mo Nov 13, 2023 6:09 pm, insgesamt 6-mal geändert.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Ersteller
Robosoc
Reactions:
Beiträge: 1887
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 639 Mal
Danksagung erhalten: 779 Mal

#2

Beitrag von Robosoc »

Wäre schön, wenn sich jemand der Custrom-Logiken versteht das ganze mal Ansehen kann. Das Testen wird ja teilweise recht lange dauern und wenn ich einen Fehler beim Jahreswechsel-Trigger gemacht habe, dann ist das auch erstmal doof, weil man die Zeitreihen ja noch nicht manipulieren kann.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Robert_Mini
Reactions:
Beiträge: 3763
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1177 Mal
Danksagung erhalten: 2080 Mal

#3

Beitrag von Robert_Mini »

Ich schau mir das mal an.
Ich hab sowas auch am Start (und offensichtlich nicht geteilt).

Ein Problem sehe ich schon: du triggerst die Logik zum Jahreswechsel 3x …

Vielleicht können wir das zum Anlass nehmen und einen gemeinsamen (künftigen) Standardbaustein daraus machen?

Du schreibst bei O1-8 kann man nichts einstellen. D.h. send explicit?

Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

gbglace
Reactions:
Beiträge: 3668
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1287 Mal
Danksagung erhalten: 1691 Mal

#4

Beitrag von gbglace »

Ist Samstag zu Samstag wegen so einer Linux Datumslogik gesetzt? Der Kirche scheint das ja in der Logik auch zu gefallen aber als einfache arbeitende Bürobevölkerung ohne Gedanken an den Chef auf der Wolke, fängt die Woche am Montag an.
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

Robert_Mini
Reactions:
Beiträge: 3763
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1177 Mal
Danksagung erhalten: 2080 Mal

#5

Beitrag von Robert_Mini »

Hallo Sven!

Keine Ahnung. In Europa primär Mo-So.

Hier mal der Code von mir.

Was ist anders:
1) Reset + Schreiben um 0:00 statt 23:59:59, ich denke aber inzwischen auch, dass es für Zeitserien besser ist, am Tagesende zu schreiben

2) für die Tageszwischenstände habe ich noch ein min_interval umgesetzt, so dass nur zb alle 10min gesendet wird, auch wenn der Zähler am Eingang, alle 60s kommt!

3) das mehrfache Triggern zu Monats/Jahresreset hab ich in dieser Logik auch nicht angefangen. Lässt sich aber einfach machen, in dem Man den Cron für den Tagesreset nicht mit (0, 0, 0, *, *, *) macht, sondern (0, 0, 0, 2-31, *, *). Bei dir etwas aufwendiger, mit 1-30 für die langen Monate etc.

Mir gefällt dein Ansatz, würde aber 2) gerne darin erweitern.
Was sagst du?

Lg
Robert

Code: Alles auswählen


/**=====================================================================
Umrechnung von fortlaufenden Zähler auf 
Tages/Wochen/Monats/Jahres Zäher und Gesamtzähler (offset)
======================================================================*/
{
  "Level": [
    ["$I_Zaehlerstand","float",0.0],
   
	["$ZaehlerTag","float",0.0],
	["$ZaehlerTag2","float",0.0],
	["$ZaehlerTag3","float",0.0],
	["$ZaehlerTagNeu","float",0.0],
	["$ZaehlerTagLast","float",213.01],
	["$ZaehlerTag2Last","float",0.0],
	["$ZaehlerWoche","float",0],
	["$ZaehlerWoche2","float",0.0],
	["$ZaehlerWoche3","float",0.0],
	["$ZaehlerWocheNeu","float",0.0],
	["$ZaehlerWocheLast","float",0],
	["$ZaehlerMonat","float",0.0],
	["$ZaehlerMonat2","float",0.0],
	["$ZaehlerMonat3","float",0.0],
	["$ZaehlerMonatNeu","float",0.0],
	["$ZaehlerMonatLast","float",0.0],
	["$ZaehlerMonat2Last","float",0.0],
	["$ZaehlerJahr","float",0.0],
	["$ZaehlerJahr2","float",0.0],
	["$ZaehlerJahr3","float",0.0],
	["$ZaehlerJahrLast","float",0.0],
	["$ZaehlerJahrNeu","integer",0.0],
	["$ZaehlerGes","float",0.0],
	["$ZaehlerGes2","float",0.0],
	["$ZaehlerGes3","float",0.0],
	["$ZaehlerGesNeu","float",0.0],
	["$Faktor","float",1.0],
	["$Offset_Zaehlerstand","float",1.0],
	
	["$Interval","float",10.0],
	["$Interval2","float",10.0],
	["$Delta","integer",0.0],
	["$New","bool",false],
	["$New1","bool",false],
	["$New2","bool",false],
	["$Konst1","float",1.0],
    ["$Konst0","float",0.0],
    ["$KonstTrue","bool",true],
	["$ResetTag","bool",false],
	["$ResetWoche","bool",false],
	["$ResetMonat","bool",false],
	["$ResetJahr","bool",false],
    ["$StartZeitTag","string","10 0 0 * * *"],
    ["$StartZeitWoche","string","11 0 0 * * 1"],
    ["$StartZeitMonat","string","12 0 0 1 * *"],
    ["$StartZeitJahr","string","13 0 0 1 1 *"]
  ],
  "Module": [   
	["Triggered", "$I_Zaehlerstand", "$New2"],
    // Tag Zurücksetzen 
    ["Cron","$KonstTrue","$ResetTag",0,"$StartZeitTag"],
    // Beim Reset als Vortag merken
    ["Latch","$ZaehlerTag2","$ZaehlerTag2Last","$ResetTag",0],
    // Letztstand merken
    ["Latch","$I_Zaehlerstand","$ZaehlerTagLast","$ResetTag",0],
    ["Multiplexer",["$ResetTag","$Konst0"],"$ResetTag","$ResetTag"],
    
    // Woche Zurücksetzen	
    ["Cron","$KonstTrue","$ResetWoche",0,"$StartZeitWoche"],
    ["Latch","$I_Zaehlerstand","$ZaehlerWocheLast","$ResetWoche",0],
    ["Multiplexer",["$ResetWoche","$Konst0"],"$ResetWoche","$ResetWoche"],	
    
    // Monat Zurücksetzen / Letztstand merken
    ["Cron","$KonstTrue","$ResetMonat",0,"$StartZeitMonat"],
    // Beim Reset als Vortag merken
    ["Latch","$ZaehlerMonat2","$ZaehlerMonat2Last","$ResetMonat",0],
    ["Latch","$I_Zaehlerstand","$ZaehlerMonatLast","$ResetMonat",0],
    ["Multiplexer",["$ResetMonat","$Konst0"],"$ResetMonat","$ResetMonat"],	
	// Jahr Zurücksetzen	
    ["Cron","$KonstTrue","$ResetJahr",0,"$StartZeitJahr"],
	["Latch","$I_Zaehlerstand","$ZaehlerJahrLast","$ResetJahr",0],
    ["Multiplexer",["$ResetJahr","$Konst0"],"$ResetJahr","$ResetJahr"],	
    //
	// Zahlerstand berechnen
	["Polynomial","$Konst1","$ZaehlerTag2",["$I_Zaehlerstand","-$ZaehlerTagLast"]],
	["Polynomial","$Konst1","$ZaehlerWoche2",["$I_Zaehlerstand","-$ZaehlerWocheLast"]],
	["Polynomial","$Konst1","$ZaehlerMonat2",["$I_Zaehlerstand","-$ZaehlerMonatLast"]],
	["Polynomial","$Konst1","$ZaehlerJahr2",["$I_Zaehlerstand","-$ZaehlerJahrLast"]],
	["Polynomial","$Konst1","$ZaehlerGes2",["$Offset_Zaehlerstand","$I_Zaehlerstand"]],  //

    // Nur Aktualisieren, wenn Sendebedingung erfüllt ist
	["Monoflop","$New","-$KonstTrue","$New2","$Interval2",0],
	["Multiplexer",["$ZaehlerTag2","$ZaehlerTag3"],"$ZaehlerTag3","$New2"],   
	//
	["Monoflop","$New","-$KonstTrue","$New1","$Interval",0],
    ["Multiplexer",["$ZaehlerWoche2","$ZaehlerWoche3"],"$ZaehlerWoche3","$New1"],  
    ["Multiplexer",["$ZaehlerMonat2","$ZaehlerMonat3"],"$ZaehlerMonat3","$New1"],  
    ["Multiplexer",["$ZaehlerJahr2","$ZaehlerJahr3"],"$ZaehlerJahr3","$New1"],  
    ["Multiplexer",["$ZaehlerGes2","$ZaehlerGes3"],"$ZaehlerGes3","$New1"]
  ],
  "Output": [
    ["Zählerstand Tag","Zählerstand Tag","$ZaehlerTag3","c"],
    ["Zählerstand Woche","Zählerstand Woche","$ZaehlerWoche3","c"],
    ["Zählerstand Monat","Zählerstand Monat","$ZaehlerMonat3","c"],
    ["Zählerstand Jahr","Zählerstand Jahr","$ZaehlerJahr3","c"],
    ["Zählerstand Gesamt","Zählerstand Gesamt","$ZaehlerGes3","c"],
    ["Zählerstand Vortag","Zählerstand Vortag, sendet nur bei Reset","$ZaehlerTag2Last","c"],
    ["Zählerstand Monat1","Zählerstand im lfd. Monat, sendet nur bei Reset 1x/Tag","$ZaehlerMonat2Last","c"]
//    ["Impulszähler Woche","Anzahl der Impulse Woche","$ZaehlerWoche","c"],
//    ["Impulszähler Monat","Anzahl der Impulse Monat","$ZaehlerMonat","c"],
//    ["Impulszähler Jahr","Anzahl der Impulse Jahr","$ZaehlerJahr","c"],
//    ["Impulszähler Gesamt","Anzahl der Impulse Gesamt","$ZaehlerGes","c"]
  ],
  "Input": [
    ["Zählerstand","Eingang Zaehlerstand von Smartmeter etc.","$I_Zaehlerstand","a"],
    ["Faktor","Faktor Impulsanzahl => Zählerstand","$Faktor","c"],
	["Min. Interval Tag","Mindestzeitinterval zum Senden Tageszähler","$Interval2","c"],
	["Min. Interval","Mindestzeitinterval zum Senden Wochen/Monats/Jahreszähler","$Interval","c"],
	["Offset","Offset für Zählerstand gesamt","$Offset_Zaehlerstand","c"]
  ]
}

 //["Polynomial", "$Konst1", "$Temp_Soll",["$I_Temp_Soll", "$I_Offset"]],	
      //["Ratio","$Konst100","$Steigung","$I_Delta_T_Max"],
	  //["Limiter","$Hoehe_Soll","$Hoehe_Soll_Lim","$Val_ok",["$I_Hoehe_Min", "$I_Hoehe_Max"]],
	  //["Comparator", "$I_Hoehe_Min", "$SelectHoehe", "$Hoehe_Soll"],
      //["Multiplexer",["$Konst0","$Hoehe_Soll_Lim"],"$Hoehe_Soll_Lim","-$SelectHoehe"],			
	  //["Or" , ["$Val_Large1" , "$Val_Large2"], "$Val_Large"],
	  //["And" , ["-$Val_Large" , "-$Val_Null"], "$Val_Small"],
	  //["Monoflop","$Val_Large",0,"$Timer_Large","$I_Delay",1],
	  //["Latch","$Hoehe_Soll_Step","$Hoehe_Soll_StepB","$Val_Large",0],
	  //["Clocksignal","$ConstTRUE","$Clk","$Period"],
	  //["HobbsMeter","$State","$Time","$Reset"],
	  //["Cron","$KonstTrue","$ResetTag",0,"$StartZeitTag"],
	  //["BinaryMultiplexer",["$In_D","$In_E","$In_F"],"$Output"]
	  //["Triggered", "$Input", "$Touched" ]
	  //["SendExplicit","$Send","$Out_val",0]
Zuletzt geändert von Robert_Mini am So Okt 09, 2022 1:32 pm, insgesamt 2-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

tger977
Reactions:
Beiträge: 741
Registriert: So Aug 12, 2018 9:25 am
Hat sich bedankt: 205 Mal
Danksagung erhalten: 274 Mal

#6

Beitrag von tger977 »

Finde eure Arbeit hier sehr interessant, so ein Zählerstatistik Baustein fehlt definitiv dem TW noch. Danke für eure Arbeit, mir zeigt das leider einmal mehr meine Grenzen bei den custom Logiken auf...
Gruß
Andi

TW2500 #440 (ex Timberwolf 2400 #111) mit PBM #124, Support VPN nur auf Anfrage, Reboot bitte nur nach Absprache

Ersteller
Robosoc
Reactions:
Beiträge: 1887
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 639 Mal
Danksagung erhalten: 779 Mal

#7

Beitrag von Robosoc »

Robert_Mini hat geschrieben: Sa Okt 08, 2022 5:39 pm Ein Problem sehe ich schon: du triggerst die Logik zum Jahreswechsel 3x …
Oh ja, das ist unschön...war mir garnicht klar geworden. Danke.
Liegt daran, dass ich, wie Du schon vermutet hast SendExplicit einsetzen wollte.

Das 3x triggern an sich ist ja auch erstmal nicht dramatisch, ABER wenn man dann recht viele Zähler damit verwenden will (bei mir werden es wohl so 18)...dann geht da Silvester kurz vor Mitternacht ja ein Feuerwerk mit 18x3 triggern und Schreibzugriffen auf die Datenbank ab. Das ist sicherlich jetzt auch nicht dramatisch, aber die Frage ist, ob 1sek wirklich reicht und mir wäre es ja lieb wenn die Datn Periodengerecht in eine Zeitserie geschrieben werden.
Robert_Mini hat geschrieben: Sa Okt 08, 2022 5:39 pm Vielleicht können wir das zum Anlass nehmen und einen gemeinsamen (künftigen) Standardbaustein daraus machen?
Sehr sehr gerne, so war es auch meine Intention, wenn ich V1 schreibe.. :D
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Ersteller
Robosoc
Reactions:
Beiträge: 1887
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 639 Mal
Danksagung erhalten: 779 Mal

#8

Beitrag von Robosoc »

gbglace hat geschrieben: So Okt 09, 2022 7:39 am Ist Samstag zu Samstag wegen so einer Linux Datumslogik gesetzt? Der Kirche scheint das ja in der Logik auch zu gefallen aber als einfache arbeitende Bürobevölkerung ohne Gedanken an den Chef auf der Wolke, fängt die Woche am Montag an.
:D

Ich habe mir ehrlich gesagt überhaupt keine Gedanken gemacht. Ich habe einfach im Cron-String die 6 gewählt, weil es analog zu meinen Zeitangaben 23:59:59 der höchste mögliche Wert war. Ich wollte eben zur Ende der Woche die Werte schreiben.

Erst als ich dann den Text fürs Forum geschrieben habe, habe ich im Wiki nachgelesen, welcher Tag die Nummer im Cron-String ist. Und dann habe ich auch nicht weiter nachgedacht. Ich nehme mal an, dass sich die Cron-Syntax an irgendeinem Standard orientiert (vermutlich amerikanisch, ich glaube eher nicht Christlich :laughing-rolling: ). Es wäre sicher sinnvoll hier eher nach der Iso.Kalenderwoche zu gehen. So wie man in Excel ja auch die Funktion Isokalenderwoche() nutzen muss, wenn man eine in Deutschland sinnvolle KW erechnen will.

Kurz mal gegooglet "Mit der Excel ISOKALENDERWOCHE Funktion kannst du die Wochennummer (1-54) eines Datums bestimmen. Laut dem ISO-Standards startet eine Woche mit Montag ..."
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Ersteller
Robosoc
Reactions:
Beiträge: 1887
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 639 Mal
Danksagung erhalten: 779 Mal

#9

Beitrag von Robosoc »

Robert_Mini hat geschrieben: So Okt 09, 2022 9:46 am Hier mal der Code von mir.
Fange gerade an zu verstehen, was Du damit alles machst und bekomme beim Anlegen der Logikzelle einen Fehler:
c[k.name] is undefined

Läuft der Code so wirklich bei Dir?
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Ersteller
Robosoc
Reactions:
Beiträge: 1887
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 639 Mal
Danksagung erhalten: 779 Mal

#10

Beitrag von Robosoc »

tger977 hat geschrieben: So Okt 09, 2022 9:58 am So ein Zählerstatistik Baustein fehlt definitiv dem TW noch.
Was genau meinst Du mit Zählerstatistik? Mein Code zumindest passt nicht zum Begriff Statistik, er gibt ja lediglich Werte am Ende eine Periode aus. Daher die Frage was Du Dir so wünschen würdest.

Mein Ziel war es Werte aufbereitet in eine Zeitreihe zu schubsen um die Auswertung z.B. in Grafana einfacher und vor allem perioden-richtiger zu machen, weil Influx ja leider nicht auf echte Kalenderjahre und Kalendermonate verdichtet.
tger977 hat geschrieben: So Okt 09, 2022 9:58 am Danke für eure Arbeit, mir zeigt das leider einmal mehr meine Grenzen bei den custom Logiken auf...
Eigentlich wollte ich darauf gar nicht mehr eingehen, aber ich kann mich nicht zurückhalten :twisted:
Custom-Logiken, sind natürlich eine Sache für Leute, die tiefer einsteigen wollen. Dafür muss man dann auch bereit sein etwas Zeit zu investieren. Man muss als Erstes verstehen, dass es grob vier Blöcke gibt. Diese sind in dem JSON-Format sehr sehr einfach zu identifizieren:
  1. INPUT - hier wird lediglich die GUI darüber informiert, welche Eingänge die Zelle hat, man definiert a) Name, b) eine Tooltipbeschreibung, c) die mit diesem Eingang verknüpfte Variable und d) das Empfangsverhalten...wer eine Standardlogik verwendet hat, versteht das sehr schnell.
  2. OUTPUT - analog zu IPNPUT, hier wird lediglich die GUI darüber informiert, welche Ausgänge die Zelle hat, man definiert a) Name, b) eine Tooltipbeschreibung, c) die mit diesem Ausgang verknüpfte Variable und d) das Empfangsverhalten...wer eine Standardlogik verwendet hat, versteht das sehr schnell.
  3. LEVELS - hier werden einfach nur Variablen und Constanten deklariert...nichts weiter.
Die Musik spielt einzig in dem 4trn Block MODULS. Und um den zu verstehen muss man eben die paar Baustiene kennen, die es gibt. Das sind insgesamt nur 31, aber Einige davon sind denke ich jedem schnell klar (AND, OR, ASTRO, COMPERATOR, STOPWATCH, RATIO...). Die Syntax innerhalb der Bausteine ist dann auch immer klar [NAME, EINGANG, AUSGANG, SONSTIGE PARAMENTER].

Aber jetzt bin ichscho nwieder sehr lange OFFTopic unterwegs....lass uns das besser nicht hier weiter beschreiben...
Zuletzt geändert von Robosoc am So Okt 09, 2022 1:42 pm, insgesamt 2-mal geändert.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK
Antworten

Zurück zu „Zusätzliche Logikbausteine“