Autor Thema: [Gelöst] Reading innerhalb einer Zeitspanne  (Gelesen 2569 mal)

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1033
[Gelöst] Reading innerhalb einer Zeitspanne
« am: 17 Mai 2021, 17:23:45 »
Hallo,
ich möchte eine Pumpe überwachen.
Wenn sie innerhalb von 15 Min 3 mal läuft, soll ein Event auslösen.

Versuchte habe ich folgendes DOIF:
([Pumpe_dummy] eq "on") {
if (secondsSinceReadingChange(Pumpe_dummy, "state") <5)}
(setreading $SELF check on)
DOELSE
(setreading $SELF check off)

wait 900
do resetwait

Leider funktioniert es nicht.

Bin für Hilfestellung dankbar.
VG Deieter
« Letzte Änderung: 18 Mai 2021, 23:15:35 von dk3572 »

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8698
Antw:Reading innerhalb einer Zeitspanne
« Antwort #1 am: 18 Mai 2021, 09:46:55 »
Woher kommt secondsSinceReadingChange?

Die Funktion dürfte beim Trigger immer 0 liefern?

Drei mal heißt ja nicht, dass es alle 5 Minuten passiert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1033
Antw:Reading innerhalb einer Zeitspanne
« Antwort #2 am: 18 Mai 2021, 20:22:09 »
Hallo Damian,

vielen Dank für deine Mühe.
Zur Zeit versuche ich es mit einem userReading, dass mir das Einschalten mittels monotonic bis 3 zählt.
Jetzt bräuchte ich noch die zeitliche Differenz zw. 1. und 3. Einschalten.

Oder hast du einen besseren Vorschlag?

VG Dieter

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8698
Antw:Reading innerhalb einer Zeitspanne
« Antwort #3 am: 18 Mai 2021, 20:25:04 »
Hallo Damian,

vielen Dank für deine Mühe.
Zur Zeit versuche ich es mit einem userReading, dass mir das Einschalten mittels monotonic bis 3 zählt.
Jetzt bräuchte ich noch die zeitliche Differenz zw. 1. und 3. Einschalten.

Oder hast du einen besseren Vorschlag?

VG Dieter

siehe: https://fhem.de/commandref_DE.html#DOIF_Anwendungsbeispiele_im_Perlmodus

dort:

Aktion auslösen, wenn innerhalb einer bestimmten Zeitspanne ein Ereignis x mal eintritt
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1033
Antw:Reading innerhalb einer Zeitspanne
« Antwort #4 am: 18 Mai 2021, 21:11:46 »
ok, nochmals danke für deine Hilfe.

Sieht nun so aus:

{if (["Pumpe_dummy:on"] and !get_Exec("counter")) {
    $_count=1;;
    set_Exec("counter",10,'Log (3,"count: $_count action") if ($_count > 3)');;
  } else {
    $_count++;;
  }
}

Wie löse ich nun ein Event aus? Z.B. set Pumpe_dummy off

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8698
Antw:Reading innerhalb einer Zeitspanne
« Antwort #5 am: 18 Mai 2021, 21:16:42 »
indem du ein Dummy Pumpe_dummy definierst und den set Befehl absetzt
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1033
Antw:Reading innerhalb einer Zeitspanne
« Antwort #6 am: 18 Mai 2021, 21:18:19 »
der Dummy existiert ja, nur wo ich den set Befehl in der Funktion unterbringe ist mir nicht ganz klar.

Edit
habe es hinbekommen.
Vielen Dank noch mal.
VG Dieter

Edit2
Noch eine Frage.
Mit fhem_set("Pumpe_dummy off") schlate ich die Pumpe aus.
Wie bringe ich hier einen 2. set Befehl unter?
« Letzte Änderung: 18 Mai 2021, 21:55:37 von dk3572 »

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8698
Antw:Reading innerhalb einer Zeitspanne
« Antwort #7 am: 18 Mai 2021, 22:39:43 »
der Dummy existiert ja, nur wo ich den set Befehl in der Funktion unterbringe ist mir nicht ganz klar.

Edit
habe es hinbekommen.
Vielen Dank noch mal.
VG Dieter

Edit2
Noch eine Frage.
Mit fhem_set("Pumpe_dummy off") schlate ich die Pumpe aus.
Wie bringe ich hier einen 2. set Befehl unter?

Indem du einen zweiten fhem_set-Befehl mit Semikolon dranhängst
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1033
Antw:Reading innerhalb einer Zeitspanne
« Antwort #8 am: 18 Mai 2021, 22:47:54 »
set_Exec("counter",6,'fhem_set("Pumpe_dummy off");fhem_set("Telegram message \@.....") if ($_count > 3)');;
funktioniert leider nicht.
Verrätst du mir noch die Lösung?

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8698
Antw:Reading innerhalb einer Zeitspanne
« Antwort #9 am: 18 Mai 2021, 22:59:23 »
set_Exec("counter",6,'if ($_count > 3) {fhem_set("Pumpe_dummy off");fhem_set("Telegram message \@.....")}');
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1033
Antw:Reading innerhalb einer Zeitspanne
« Antwort #10 am: 18 Mai 2021, 23:15:08 »
Super, funktioniert, vielen Dank.

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1033
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #11 am: 27 Juli 2021, 19:39:28 »
Hallo Damian,

du hattest mir hier mit deiner Lösung weitergeholfen.

{if ([Hauswasserwerk:running] eq "on" and !get_Exec("counter")) {
    $_count=1;;
    set_Exec("counter",600,'if ($_count > 4) {fhem_set("Hauswasserwerk off");fhem_set("Telegram message \@Dieter_K. Hauswasserwerk Notabschaltung")}');
  } else {
    $_count++;;
  }
}

Jetzt möchte ich, nach dem die Pumpe "Not" abgeschaltet wurde, dass sie nach 1 Min wieder eingeschaltet wird.
Dies soll aber nur ein mal geschehen.
Wenn sie erneut "Not" abgeschaltet wird, soll sie auch aus bleiben.

Kannst, bzw. würdest du mir hierbei bitte helfen?

Danke dir im Voraus.

VG Dieter

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8698
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #12 am: 27 Juli 2021, 21:22:57 »
Hallo Damian,

du hattest mir hier mit deiner Lösung weitergeholfen.

{if ([Hauswasserwerk:running] eq "on" and !get_Exec("counter")) {
    $_count=1;;
    set_Exec("counter",600,'if ($_count > 4) {fhem_set("Hauswasserwerk off");fhem_set("Telegram message \@Dieter_K. Hauswasserwerk Notabschaltung")}');
  } else {
    $_count++;;
  }
}

Jetzt möchte ich, nach dem die Pumpe "Not" abgeschaltet wurde, dass sie nach 1 Min wieder eingeschaltet wird.
Dies soll aber nur ein mal geschehen.
Wenn sie erneut "Not" abgeschaltet wird, soll sie auch aus bleiben.

Kannst, bzw. würdest du mir hierbei bitte helfen?

Danke dir im Voraus.

VG Dieter

Hast du schon einen Ansatz?

Wie man verzögert eine Befehl ausführt, weißt du ja schon und wie man eine Variable mit einem Wert vorbelegt und wieder abfragt auch.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1033
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #13 am: 28 Juli 2021, 06:22:07 »
Hast du schon einen Ansatz?

Wie man verzögert eine Befehl ausführt, weißt du ja schon und wie man eine Variable mit einem Wert vorbelegt und wieder abfragt auch.

Das verzögerte Einschalten z.B. mit einem at bekäme ich noch hin.
Für den Rest habe ich leider keinen Plan.
Bei einem "normalen" DIOF würde ich es mit repeatcmd / repeatsame versuchen.
Aber hier?

Ich denke für dich ist es ein Kinderspiel und hoffe auf deine Lösung.

Danke noch mal im Voraus.

Edit:

Und hier noch meine klägliche Rumprobiererei.
Leider bin ich kein Programmierer und komme ich ohne Hilfe nicht weiter.

{if ([GoogleAssistant_dummy] eq "on" and !get_Exec("counter")) {
    $_count=1;;
    $_count2++;;
    set_Exec("counter",10,'if ($_count > 2) {fhem_set("GoogleAssistant_dummy off");set_Reading("count2",$_count2,1);fhem_set("defmod verzEin at +00:00:10 GoogleAssistant_dummy on")}');
  } else {
    $_count++;;
  }
}
« Letzte Änderung: 28 Juli 2021, 10:08:38 von dk3572 »

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8698
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #14 am: 28 Juli 2021, 10:14:37 »
Was soll denn: "nach dem die Pumpe "Not" abgeschaltet wurde" sein? Das kann ich in deinem Code nicht erkennen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

 

decade-submarginal