mit zeiten rechnen

Begonnen von the ratman, 09 September 2016, 11:53:22

Vorheriges Thema - Nächstes Thema

sash.sc

In dem Dummy muss ne zeit stehen
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

KernSani

Ich denke, da ist wieder mit Klammern spielen angesagt... Versuch mal die Uhrzeit noch separat zu klammern, also nach dem ? ein [ und vor dem | wieder zu ]. Lass mich wissen wenn's funktioniert, dann baue ich es für meinen Wecker nach :-D
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

the ratman

#17
@sash.sc
naja, eig. stehen nach dem | die wochentage

@KernSani
hab schon wie n böser klammern aller arten probiert *g* meine versuche mochte fhem auf jeden fall mal nicht

dein vorschlag wäre also aus
[?([homObot_Uhrzeit]-[00:05])|[homObot_Wochentag]-([homObot_Uhrzeit]+[00:55])|[homObot_Wochentag]]
[?[([homObot_Uhrzeit]-[00:05])]|[homObot_Wochentag]-([homObot_Uhrzeit]+[00:55])|[homObot_Wochentag]]
zu machen
das ergibt dann leider ne dumme fehlermeldung
homObot_Tagesreinigung DOIF: device does not exist: ([homObot_Uhrzeit]-[00: [([homObot_Uhrzeit]-[00:05])]

nachtrag:
nur der vollständigkeit halber - das funzt eben nicht
[?([homObot_Uhrzeit]-[00:05])|[homObot_Wochentag]-([homObot_Uhrzeit]+[00:55])|[homObot_Wochentag]]
aber das
[?([homObot_Uhrzeit]-[00:05])|012345-([homObot_Uhrzeit]+[00:55])|012345]
schon.
es liegt in meinen augen also eindeutig daran, dass ich den dummy falsch eintrage. er schreibt aber z.b.
[?([homObot_Uhrzeit]-[00:05])|{ReadingsVal("homObot_Wochentag","state",0)}-([homObot_Uhrzeit]+[00:55])|{ReadingsVal("homObot_Wochentag","state",0)}]
leider ebenso als klartext raus - also falsch. da mir sonst aber keine weitere schreibweise bekannt is ...
des weiteren hab ich probiert, den "|" mit dem dummy mit zu übergeben. da kommt dann ne fehlermeldung, dass dies ne falsche uhrzeit sei.
übrigens auch das ganze konstrukt ohne ein "?" am anfang bringt die selben ergebnisse.
→do↑p!dnʇs↓shit←

Damian

Zitat von: the ratman am 10 September 2016, 14:33:37
@sash.sc
naja, eig. stehen nach dem | die wochentage

@KernSani
hab schon wie n böser klammern aller arten probiert *g* meine versuche mochte fhem auf jeden fall mal nicht

dein vorschlag wäre also aus
[?([homObot_Uhrzeit]-[00:05])|[homObot_Wochentag]-([homObot_Uhrzeit]+[00:55])|[homObot_Wochentag]]
[?[([homObot_Uhrzeit]-[00:05])]|[homObot_Wochentag]-([homObot_Uhrzeit]+[00:55])|[homObot_Wochentag]]
zu machen
das ergibt dann leider ne dumme fehlermeldung
homObot_Tagesreinigung DOIF: device does not exist: ([homObot_Uhrzeit]-[00: [([homObot_Uhrzeit]-[00:05])]

nachtrag:
nur der vollständigkeit halber - das funzt eben nicht
[?([homObot_Uhrzeit]-[00:05])|[homObot_Wochentag]-([homObot_Uhrzeit]+[00:55])|[homObot_Wochentag]]
aber das
[?([homObot_Uhrzeit]-[00:05])|012345-([homObot_Uhrzeit]+[00:55])|012345]
schon.
es liegt in meinen augen also eindeutig daran, dass ich den dummy falsch eintrage. er schreibt aber z.b.
[?([homObot_Uhrzeit]-[00:05])|{ReadingsVal("homObot_Wochentag","state",0)}-([homObot_Uhrzeit]+[00:55])|{ReadingsVal("homObot_Wochentag","state",0)}]
leider ebenso als klartext raus - also falsch. da mir sonst aber keine weitere schreibweise bekannt is ...
des weiteren hab ich probiert, den "|" mit dem dummy mit zu übergeben. da kommt dann ne fehlermeldung, dass dies ne falsche uhrzeit sei.
übrigens auch das ganze konstrukt ohne ein "?" am anfang bringt die selben ergebnisse.

Wie kommst du darauf in einer Zeitangabe mehrere Pipezeichen | anzugeben.

Die Syntax ist:

[(Rechnen mit Zeiten)|Wochentag]

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

the ratman

#19
ZitatWie kommst du darauf in einer Zeitangabe mehrere Pipezeichen | anzugeben.
einfach, weils ohne dem device funzt?
ausserdem hab ich die von-bis angaben für z.b. zeitäume (?) und triggern zu verschiednen zeiten/tagen dann so interpretiert
[(Rechnen mit Zeiten1)|Wochentage1]-[(Rechnen mit Zeiten2)|Wochentage2]

das[?([homObot_Uhrzeit]-[00:05])|012345-([homObot_Uhrzeit]+[00:55])|012345]geht ja auch
aber z.b. das[([homObot_Uhrzeit]-[00:10])|[homObot_Wochentag]]geht auch mit nur 1 pipe nicht. während das [([homObot_Uhrzeit]-[00:10])|012345] wiederum geht.
→do↑p!dnʇs↓shit←

Damian

#20
Zitat von: the ratman am 10 September 2016, 18:14:42
einfach, weils ohne dem device funzt?
ausserdem hab ich die von-bis angaben für z.b. zeitäume (?) und triggern zu verschiednen zeiten/tagen dann so interpretiert
[(Rechnen mit Zeiten1)|Wochentage1]-[(Rechnen mit Zeiten2)|Wochentage2]

das[?([homObot_Uhrzeit]-[00:05])|012345-([homObot_Uhrzeit]+[00:55])|012345]geht ja auch
aber z.b. das[([homObot_Uhrzeit]-[00:10])|[homObot_Wochentag]]geht auch mit nur 1 pipe nicht. während das [([homObot_Uhrzeit]-[00:10])|012345] wiederum geht.

Dann muss ich hier einiges geradestellen.

1. Bei Zeitintervallen von-bis gibt es nur ein Pipezeichen und nicht zwei. (Edit: hier ist der Parser etwas großzügig und meckert nicht, genommen wird aber nur die zweite Wochentagangabe)
2. Indirekte Wochentagangaben werden erst zum Ausführungszeitpunkt ausgewertet, daher ist die Angabe in eckigen Klammern bei den timer-Readings normal und funktioniert auch korrekt.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

KernSani

Zitat von: Damian am 10 September 2016, 20:54:14
2. Indirekte Wochentagangaben werden erst zum Ausführungszeitpunkt ausgewertet, daher ist die Angabe in eckigen Klammern bei den timer-Readings normal und funktioniert auch korrekt.
Arrrggg... Da hätte ich auch selbst drauf kommen können. Würde ja überhaupt keinen Sinn machen, das beim Anlegen des DOIFs schon auszuwerten.
@Damian: Danke für die Erklärung
@ratman:  Dann kann deine Sauger jetzt losrennen und ich kann einstellen, an welchen Tagen ich geweckt werden will... Hast Du schon was gefunden um die Tage einzustellen? multiple-strict liefert ja leider Komma-getrennt zurück :-(
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

the ratman

sag jetzt nur bloß nicht, dass das schon wo steht *g*

auf jeden fall danke für die info
→do↑p!dnʇs↓shit←

the ratman

hihi, ich wusste, dass ich euch nicht lange in ruh lassen werd *g*
diesmal: ich will mir einen dummy basteln, mit dem ich die aktiven wochentage einstellen kann

der dummy exisitert schon mal und macht auch brav seine 0er und 1er und ...readingList      So Mo Di Mi Do Fr Sa
setList So:0, Mo:1, Di:2, Mi:3, Do:4, Fr:5, Sa:6
stateFormat So Mo Di Mi Do Fr Sa
webCmd So:Mo:Di:Mi:Do:Fr:Sa
das problem: ich krieg anstelle "0123" natürlich "0 1 2 3" raus.
wie krieg ich die abstände da raus?


aja, und falls wer ne idee hat, wie man das ganze mit icons machen könnte - also z.b. icon für "MO ein" und icon für "MO aus", das dann aber "1" oder "nix" liefert ... ich würd demjenigen die füße küssen *g*. muß aber im floorplan funzen. und da verweigern zumindest bei mir die widgets schon mal ihren dienst.
→do↑p!dnʇs↓shit←

Damian

Zitat von: the ratman am 11 September 2016, 18:14:54
hihi, ich wusste, dass ich euch nicht lange in ruh lassen werd *g*
diesmal: ich will mir einen dummy basteln, mit dem ich die aktiven wochentage einstellen kann

der dummy exisitert schon mal und macht auch brav seine 0er und 1er und ...readingList      So Mo Di Mi Do Fr Sa
setList So:0, Mo:1, Di:2, Mi:3, Do:4, Fr:5, Sa:6
stateFormat So Mo Di Mi Do Fr Sa
webCmd So:Mo:Di:Mi:Do:Fr:Sa
das problem: ich krieg anstelle "0123" natürlich "0 1 2 3" raus.
wie krieg ich die abstände da raus?


DOIF ist an dieser Stelle ziemlich großzügig. Es sucht nur nach dem Vorkommen der passenden Ziffer, egal was da sonst noch drin steht.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

the ratman

d.h.: wenn dort [14:00|0x 1aaa23456] stehen würde, würd ers brav als 0123456 intepretieren?
is ja genial ... thx für die info!
→do↑p!dnʇs↓shit←

KernSani

Zitat von: Damian am 11 September 2016, 18:46:11
DOIF ist an dieser Stelle ziemlich großzügig. Es sucht nur nach dem Vorkommen der passenden Ziffer, egal was da sonst noch drin steht.
Dank dieses grandiosen Hinweises habe ich mir jetzt (erstmal die vereinfachte Version) meines Wochentags-Dummys gebaut:
setList    state:multiple-strict,8-Werktags,7-Wochenende/Feiertag
DOIF ist so großzügig und interpretiert das tatsächlich als 7 oder 8 oder 78 :-)
Thanks!
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

the ratman

hiho - natürlich steht euer onkel ratty wieder mal an ... ich hab meine steuerung des putzroboters so weit fertig, allerdings mag mir das ding nicht anstarten, wenn schon meine bedienungen vor dem start erfüllt wurden. "do" und "event-on..." hab ich schon in so gut wie allen im forum gefundenen kombis durch, aber nix passiert.
hat wer ne idee dazu?

das doif(
   [?[homObot_Uhrzeit]|[homObot_Wochentag]-([homObot_Uhrzeit]+[01:00])|[homObot_Wochentag]]
      and
   [homObot_BeginntAnAus:state] eq "on"
      and
   [MK_Schiebetuer:state] eq "closed"
      and
   [MK_Badezimmertuer:state] eq "closed"
)

(
set homObot Start;
)


DOELSEIF ## Status

(
   [?[homObot_Uhrzeit]|[homObot_Wochentag]-([homObot_Uhrzeit]+[01:00])|[homObot_Wochentag]]
      and
   [homObot_BeginntAnAus:state] eq "on"
      and
   [MK_homObot:sabotageError] eq "on"
)

(
    set BotGeputztDummy j;
)


DOELSEIF ## Reset

(
   [([homObot_Uhrzeit]-[00:10])|[homObot_Wochentag]]
      and
   [homObot_BeginntAnAus:state] eq "on"
)

(
   set homObot_Tagesreinigung initialize;
   set BotGeputztDummy n;
   set homObot_Startansage initialize;
)
erklärung:
der homobot soll starten, wenn die zeiten und tage passen (das funzt so tatsächlich prima), der bot nicht per schalter deaktiviert wurde und die beiden angegebenen türen geschlossen sind.
"## Status" ist dazu da, um ein ständiges wiederholen eines doif's für die "türenschließwarnung" zu unterbinden.
"## Reset" setze mal 10 vor beginn alles sicherheitshalber auf "ausgangsposition"
"MK_homObot:sabotageError" falls sich wer fragt ... das ding ist n magnetkontakt, dessen sabo-kontakt mit nem endschalter getuned is, um mir zu zeigen ob der bot in der ladestation ist.
verhalten:
ist noch eine tür zu schließen, während die zeitspanne stimmt, fährt der bot ohne murren los.
sind allerdings schon alle ereignisse erfüllt (beide türen zu, der schalter für die "fahrerlaubis" ein), dann gibt er zwar an, dass das letzte ausgeführte command cmd_1 war, aber der bot kriegt keinen startbefehl.
verdacht:
es hat wohl was mit den zeiten/tagen zu tun. wie ich die aber als trigger verwenden kann, ist mir rätselhaft. das "?" kann ich in dem fall ja nicht einfach weg machen, weil (so hab ichs zumindest verstanden) dann ja nur anfangs- und endzeit als trigger benutzt werden würden. korrekt?
→do↑p!dnʇs↓shit←

CoolTux

set homObot cleanStart;

Du Nase  ;D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

the ratman

befehlscode auszug mein geliebter nasenbär:
ich mach das doch per harmony hub, weil mein bot ja den hack verweigert ...
ZitathomObot   LG   CE VR 64701 LVMP
   Volume
      Mute                   Mute
   NavigationBasic
      DirectionDown          Direction Down
      DirectionLeft          Direction Left
      DirectionRight         Direction Right
      DirectionUp            Direction Up
   PlayMode
      Repeat                 Repeat
   Miscellaneous
      Clock                  Clock
      Diagnosis              Diagnosis
      Home                   Home
      Mode                   Mode
      MySpace                MySpace
      Schedule               Schedule
      Start                  Start
      Stop/OK                Stop/OK
      Turbo                  Turbo 
→do↑p!dnʇs↓shit←