Hallo,
ich lasse per RandomTimer Rollos hoch- und runterfahren. Das hat auch funktioniert, bis ich vor ein paar Wochen ein Update gemacht habe... jetzt wird bei jeder Aktion des RandomTimer nur noch onCmd ausgeführt (set Rollo pct 55) und im Log erscheint
[Rollo_ran] result of function Value(Rollo) must be 'on' or 'off'
Hat es was damit zu tun, dass "Rollo" nicht "on" oder "off" ist, sondern in diesem Fall "55"?
Grüße
Ja
Interne Veränderungen machten es erforderlich, den Status des device abzufragen. Ich sehe morgen mal nach was du machen kannst.
Hallo Dietmar,
hattest Du schon Gelegenheit, mal nachzuschauen?
Grüße
du kannst mit stateFormat das Ergebnis der Funktion Vaule verändern, so dass immer on oder off als Ergebnis geliefert wird. Dann funktioniert RT
Hallo,
ich habe da glaube ich ebenfalls ein Problem.
Ich nutze eine WLAN-Steckdose von Edimax.
Bei der Steckdose ist der On-State leider nicht "on" sondern "ON / 10.15 W / 0.0702 A"
Kann mit jemand sagen wie hier dann das stateFormat aussehen würde, hab bis jetzt keine Erfahrung mit stateFormat.
Vielen Dank.
Gruß
Jonas
versuch mal
{lc(Value("deineDeviceName"))}
Hallo Dietmar,
danke für den Input.
Wenn ich dies eintragen, dann scheint sich der State nicht mehr zu aktualisieren.
Im Logfile steht dann: "2017.02.23 09:45:42 3: EDIPlug_01, empty return buffer [1]"
Hast du noch ne Idee?
was hast du genau eingetragen?
ich habe in meinem EDIPlug Device "EDIPlug_01" das Attribute stateFormat mit folgendem Inhalt angelegt:
{lc(Value("EDIPlug_01"))}
Das Device lässt sich noch schalten, der State aktualisiert sich dann aber nicht mehr und im Log steht:
2017.02.24 11:21:20 3: EDIPlug_01, empty return buffer [1]
Wenn ich es richtig verstehen, dann benötige ich für den RT im State immer on oder off.
Bei dem EDIPlug steht aber statt on eben das "ON / 10.15 W / 0.0702 A" drin.
Wie bekomme ich es hin, dass hier nur on steht?
@Dietmar63
Hast du noch eine Idee dazu?
Nee, noch nicht - hatte andere Dinge im Kopf
habe mir den Code angesehen - ich kann wahrscheinlich was machen, stateFormat wirkt im Moment wirkt nicht
Ich werde zweierlei machen:
a) Groß- Kleinschreibung ignorieren
b) prüfen ob stateFormat genutzt werden kann - dann kann jeder Zustand des state in on/off verwandelt werden.
Bei der Steckdose ist der On-State leider nicht "on" sondern "ON / 10.15 W / 0.0702 A"
was steht in state, wenn die Steckdose off ist.
kannst du Perl?
wenn die Steckdose aus ist, dann steht im State: "OFF"
Was Perl an geht so ist können definiv übertrieben.
Ich kann Quellcode lesen und schaffe es mir das bis jetzt benötigte dann durch try and error zu "bauen"
Danke für deine Unterstützung.
hab grad noch was gefunden.
Bei den Devices vom Type "EDIPLUG" gibt es noch ein Feld "Power" hier steht immer "on" oder "off" drin.
Wäre also eventuell die Möglichkeit auf den Device Type zu prüfen und wenn es sich um ein "EDIPLUG" handelt dann nicht auf "State" sondern auf "Power" zu prüfen.
erzeuge mal bitte ein list auf dem Gerät - dann kann ich vielleicht das richtige stateFormat liegen.
Hier sind die Listings:
1. Jalou_1_rdm
Internals:
9495_UW_MSGCNT 180
9495_UW_RAWMSG 0FFF0F210D08D00000004100130000619FB5FFFFFF01
9495_UW_TIME 2017-03-14 06:10:04
CODE 619FB5
DEF 619FB5
IODev 9495_UW
LASTInputDev 9495_UW
MSGCNT 180
NAME Jalou_1
NR 587
STATE opened
SUBTYPE RolloTron Comfort Master
TYPE DUOFERN
Readings:
2017-03-14 06:10:04 dawnAutomatic on
2017-03-14 06:10:04 duskAutomatic on
2017-03-14 06:10:04 manualMode off
2017-03-14 06:10:04 moving stop
2017-03-14 06:10:04 position 0
2017-03-14 06:10:04 state opened
2017-03-14 06:10:04 sunAutomatic on
2017-03-14 06:10:04 sunMode off
2017-03-14 06:10:04 sunPosition 65
2017-03-14 06:10:04 timeAutomatic on
2017-03-14 06:10:04 ventilatingMode on
2017-03-14 06:10:04 ventilatingPosition 80
2017-03-14 06:10:04 version 1.3
Helper:
Attributes:
IODev 9495_UW
room DUOFERN
2. Jalou_1_rdm
Internals:
COMMAND off
DEF *{sunset_abs(200)} Jalou_1 *{sunset_abs(5*3600)} 900
DEVICE Jalou_1
NAME Jalou_1_rdm
NR 591
STATE off
TYPE RandomTimer
Readings:
2017-03-14 00:15:30 Startzeit 2017-03-14 19:03:35
2017-03-14 00:15:30 Stoppzeit 2017-03-15 00:00:15
2017-03-10 16:19:23 TimeToSwitch 900
2017-03-14 00:15:30 active 0
2017-03-14 00:15:30 state off
Timer:
Jalou_1_rdm_exec:
HASH Jalou_1_rdm
MODIFIER Exec
NAME Jalou_1_rdm_Exec
Jalou_1_rdm_settimer:
HASH Jalou_1_rdm
MODIFIER SetTimer
NAME Jalou_1_rdm_SetTimer
Helper:
REL
REP *
SIGMAWHENOFF 800
SIGMAWHENON 200
STARTTIME 14.03.2017 19:03:35
STOPTIME 15.03.2017 00:00:15
SWITCHMODE 800/200
S_REL
S_REP *
TIMESPEC_START *{sunset_abs(200)}
TIMESPEC_STOP *{sunset_abs(5*3600)}
TIMETOSWITCH 900
active 0
startTime 1489514615
stopTime 1489532415
Attributes:
onCmd set HM_Steckdose_Sw toggle
switchmode 800/200
@Arminius73:
Ist das ein neuer Fall, oder hast du dich zwischendurch umbenannt?
Hallo Dietmar,
ich bin neu im Forum und habe da wohl einiges durcheinander gebracht.
Es ist ein neuer Fall, aber Du hast meinen ersten Beitrag wohl nicht bekommen und Dich dann über meine Listings gewundert, die gesendet wurden, aber ich weiß noch nicht so recht wie, da ich noch immer den Sendeknopf suche.
Wenn ich besser mit den Dialogen umgehen kann, wiederhole ich meine erste Frage.
Es könnte auch an meinen 'NoScript addons' liegen, dass meine Antworten nicht gesendet werden.
Sorry!
Gruß,
Arminius73
@Dietmar63: meintest du so eine List:
Internals:
DEF 192.168.x.xx
ERROR empty return buffer
ERRORCOUNT 0
ERRORTIME 2017-03-12 17:54:00
INTERVAL 0
LASTCMD power
MAC 74DA374AF367
MODEL SP2101W
NAME EDIPlug_01
NR 119
PName Hz_warm
POWER ON
STATE ON / 0.07 W / 0.0061 A
TYPE EDIPLUG
VERSION 2.03
addr http://192.168.x.xx:10000
auth admin:xxxx
buf
code 200
conn
data
displayurl http://admin:xxxx@192.168.x.xx:10000/smartplug.cgi
host 192.168.x.xx
httpheader HTTP/1.0 200 OK
Content-Type: application/xml; charset=utf-8
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 572
Connection: close
Date: Tue, 14 Mar 2017 23:54:56 GMT
Server: lighttpd/1.4.31-devel-299
hu_blocking 0
hu_filecount 120
hu_portSfx :10000
loglevel 4
path /smartplug.cgi
port 10000
protocol http
pwd xxxx
redirects 0
timeout 2
url http://admin:xxxx@192.168.x.xx:10000/smartplug.cgi
user admin
Readings:
2017-03-14 23:54:46 current 0.0061 A
2017-03-14 23:54:46 last_Toggle_Time 23:54:53 14.03.2017
2017-03-14 23:54:46 onoff on
2017-03-14 23:54:46 power_day 0.000 kWh
2017-03-14 23:54:46 power_month 0.000 kWh
2017-03-14 23:54:46 power_now 0.07 W
2017-03-14 23:54:46 power_week 0.000 kWh
2017-03-14 23:54:46 state ON / 0.07 W / 0.0061 A
Helper:
current 0.0061
power 0.07
list:
Sslargs:
Attributes:
alias Schalter Heizstab
eventMap on:an off:aus
group Heizung
interval 60
model SP2101W
password xxxx
read-only 0
room Heizung
sortby 1
user admin
versuch mal:
attr stateFormat EDIPlug_01 {(Value() =~ m/^on.*/i) ? "on" : "off" }
Habe es aus dem Kopf heraus geschrieben - hoffe es ist syntaktisch richtig.
Sorry, bin heute erst zum Testen gekommen.
Erhalte im Log anschließend die Meldung:
Error evaluating EDIPlug_01 stateFormat: Not enough arguments for main::Value at (eval 57649) line 1, near "() "
@Dietmar63
Kannst du dir das noch mal anschauen?
Dank dir.
attr stateFormat EDIPlug_01 {(Value("EDIPlug_01") =~ m/^on.*/i) ? "on" : "off" }
hallo Dietmar,
danke jetzt bin ich ein Schritt weiter :)
Dank dir.
Nun bleibt aber der State auf "off" selbst wenn die Steckdose eingeschaltet ist.
Hast du ne Idee?
Gib mal
{(Value("EDIPlug_01")}
wenn sie eingeschaltet ist ein und poste die Ausgabe
Hab folgendes gemacht:
- Ediplug eingeschaltet
- State ist: ON / 0.07 W / 0.0051 A
- Stateformat {(Value("EDIPlug_01"))} gesetzt.
- State ist unverändert.
- Ediplug ausgeschaltet
- State ist noch immer unverändert
Im Log steht nun
2017.04.01 18:38:55 3: EDIPlug_01, empty return buffer [1]
Neuer Versuch
attr stateFormat EDIPlug_01 {(Value("EDIPlug_01") =~ m/(ON|on)/i) ? "on" : "off" }
leider unverändert...
Mit dem letzten stateFormat.
Wie ist die Ausgabe von
{(Value("EDIPlug_01")}
in der Weboberfläche?
Also ich hab jetzt bei ausgeschaltetem EdiPlug das
{(Value("EDIPlug_01")}
eingetragen.
Nach dem Einschalten des EdiPlug steht im internal
POWER ON
STATE off
Im Reading:
onoff on
state ON / 0.07 W / 0.0053 A
Der State verändert sich sobald das stateformat eingetragen ist nicht mehr.
Bitte in stateFormat von EDIPlug_01 so eintragen :
attr stateFormat EDIPlug_01 {(Value("EDIPlug_01") =~ m/(ON|on)/i) ? "on" : "off" }
Dann in der Oberfläche von fhem
{(Value("EDIPlug_01")}
Eingeben wenn die Steckdose an/aus ist. Und den output hier veröffentlichen.
Sorry, dann hatte ich dich nicht richtig verstanden.
Hab das stateFormat entsprechend eingetragen.
Dann den EdiPlug eingeschaltet.
Ausgabe von
{(Value("EDIPlug_01"))}
ist
off
Bei ausgeschaltetem EdiPlug ist die Ausgabe:
off
Sobald das stateFormat gesetzt ist passt sich der State scheinbar nicht mehr an.
dann probiere bitte mal als stateFormat
attr stateFormat EDIPlug_01 {(ReadingsVal("EDIPlug_01","state","nF") =~ m/(ON|on)/i) ? "on" : "off" }
aus
Super, nun funktioniert es. ;D
Vielen Dank für deine unermütliche Unterstützung!!
Ich glaube ich nehme das mal in die Doku auf
Hallo Dietmar,
ich hab im Log auch immer
[zufall_wohnzimmer_abends] result of function Value(Dimmer_Wohnzimmer) must be 'on' or 'off'
Bei dem Dimmer handelt es sich um einen Homematic Dimmer. Hier ein list des Gerätes:
Internals:
DEF 1A93FF01
NAME Dimmer_Wohnzimmer
NOTIFYDEV global
NR 121
NTFY_ORDER 50-Dimmer_Wohnzimmer
STATE chn:on phys:off
TYPE CUL_HM
chanNo 01
device Licht_Wohnzimmer
Readings:
2017-06-29 20:23:28 CommandAccepted yes
2015-12-15 23:04:27 R-logicCombination or
2015-12-15 23:04:27 R-powerUpAction 0
2016-11-10 16:30:11 RegL_01. 30:06 32:50 33:64 34:4B 35:50 56:00 57:24 59:01 00:00
2017-06-29 20:23:34 deviceMsg 70 (to virtualCCU)
2017-06-29 20:23:34 dim stop:70
2017-06-29 20:23:34 level 70
2016-02-27 21:03:53 levelMissed desired:0
2017-06-29 20:23:34 overheat off
2017-06-29 20:23:34 overload off
2017-06-29 20:23:34 pct 70
2017-06-25 21:57:23 phyLevel 0
2017-06-29 20:23:34 recentStateType info
2017-06-29 20:23:34 reduced off
2017-06-29 20:23:34 state chn:70 phys:0
2017-06-29 20:23:34 timedOn off
Helper:
dlvlCmd ++A011F108041A93FF02018C0320FFFF
Dir:
cur stop
Expert:
def 1
det 0
raw 1
tpl 0
Role:
chn 1
Tmpl:
Attributes:
eventMap 70:on 0:off
expert 2_full
genericDeviceType light
model HM-LC-Dim1TPBU-FM
peerIDs 00000000,
room Wohnzimmer,alexaRoom
webCmd toggle:on:off:up:down:statusRequest
Und hier ein list meines RandomTimers
Internals:
COMMAND on
DEF *{sunset_abs(-3100)} Dimmer_Wohnzimmer {sunset_abs(+3720,"21:32","23:02")} 250
DEVICE Dimmer_Wohnzimmer
NAME zufall_wohnzimmer_abends
NR 134
STATE on
TYPE RandomTimer
Readings:
2017-06-29 19:58:38 Startzeit 2017-06-29 16:14:52
2017-06-29 19:58:38 Stoppzeit 2017-06-29 23:02:00
2017-06-29 19:58:38 TimeToSwitch 250
2017-06-29 19:58:38 active 1
2017-06-29 20:27:39 state on
Timer:
Zufall_wohnzimmer_abends_exec:
HASH zufall_wohnzimmer_abends
MODIFIER Exec
NAME zufall_wohnzimmer_abends_Exec
Zufall_wohnzimmer_abends_settimer:
HASH zufall_wohnzimmer_abends
MODIFIER SetTimer
NAME zufall_wohnzimmer_abends_SetTimer
Helper:
REL
REP *
SIGMAWHENOFF 900
SIGMAWHENON 50
STARTTIME 29.06.2017 16:14:52
STOPTIME 29.06.2017 23:02:00
SWITCHMODE 900/50
S_REL
S_REP
TIMESPEC_START *{sunset_abs(-3100)}
TIMESPEC_STOP {sunset_abs(+3720,"21:32","23:02")}
TIMETOSWITCH 250
active 1
startTime 1498745692
stopTime 1498770120
Attributes:
disableCond (Value("rgr_Residents") eq "home")
offCmd set Dimmer_Wohnzimmer pct 0
onCmd set Dimmer_Wohnzimmer pct 70
room Wohnzimmer
switchmode 900/50
Soweit ich verstanden habe, muss ich im Gerät Dimmer_Wohnzimmer ein stateformat setzen. Ich habe aber keine Ahnung, was ich da reinschreiben muss.
Kann mir vielleicht jemand helfen, dass die Fehlermeldungen unterbleiben?
Vielen Dank
oelidoc
Du musst mit statefomat aus dem was bei STATE steht ein on oder off machen.
Mehr kann ich im Moment nicht erklären, da ich schon im Urlaub bin.
Im Frühjahr hatten wir in diesem Zusammenhang auch eine schwere Nuss zu knacken - hat aber dann geklappt.
Perl ist wohl nichts für dich?
Zitat von: Dietmar63 am 29 Juni 2017, 20:54:33
Perl ist wohl nichts für dich?
Uhh, ich fürchte ja. Da bräuchte ich wohl fertigen Code
Aber schönen Urlaub erst mal!
Gruß
oelidoc
Zitat von: Dietmar63 am 29 Juni 2017, 20:54:33
Im Frühjahr hatten wir in diesem Zusammenhang auch eine schwere Nuss zu knacken - hat aber dann geklappt.
Meinst du das Beispiel mit der WLAN-Steckdose von Edimax aus der Commandref?
Hallo, wenn in der Lage bist den zu adaptieren. Ich weiß nicht mehr so genau was wir da gemacht haben.
Aber vom Prinzip solle es so ähnlich möglich sein.
Das Problem ist, dass bei dir das Reading state nicht on oder off ist wie bei normalen Steckdosenschaltern.
Und das muss mit statefomat korrigiert werden.
Wie gesagt, schreibe hier vom Handy aus, und kann nur schlecht etwas nachsehen.
Ab dem 12. 7 bin ich wieder zurück.
Dietmar
Wie gesagt: schönen Urlaub! 8)
Ich kann warten. Soweit ich das sehe, ist die Funktion des RT gegeben - nur wird eben das Logfile zugemüllt...
Hey, schon etwas her der letzte Beitrag, aber ich steh da gerade auf dem Schlauch.
Folgende Fehlermeldung habe ich nun auch:
result of function Value(SD.13) must be 'on' or 'off'
Warum weiss ich zwar, aber nicht wie ich sie weg bekomme ;-)
Ich lass mir die Optionen der Steckdose im Frontend bereits mit eventMap formatiert anzeigen:
eventMap on:An off:Aus
Entsprechend liefert Value("SD.13") den Wert "An" oder "Aus".
Hier mal list von der Steckdose.
Internals:
DEF 00111100111111000000000000 0 1101
FUUID 5c743f43-f33f-1bf5-19c2-5232816f59301e24
IODev nanoCUL433
NAME SD.13
NR 445
STATE Aus
TYPE IT
XMIT 0011110011111100000000000001101
XMITdimdown 00
XMITdimup 00
XMIToff 0
XMITon 1
CODE:
1 0011110011111100000000000001101
READINGS:
2019-04-02 18:43:54 group 0
2019-04-02 18:43:54 protocol V3
2019-04-03 20:29:57 state on
2019-04-02 18:43:54 unit 1101
Attributes:
IODev nanoCUL433
alias Steckdose 13 (Stehlampe)
devStateIcon An:general_an@green Aus:general_aus@red
eventMap on:An off:Aus
model itswitch
Was muss ich denn hier tun?
Das stateFormat greift scheinbar nicht wenn eventMap genutzt wird.