Hauptmenü

Floorplan Symbol für ECMDDevice

Begonnen von Netior, 09 Februar 2013, 16:31:10

Vorheriges Thema - Nächstes Thema

Netior

Hallo

Da jetzt die Seiten bei ECMDDevices on/off nicht mehr wechseln wollte ich nun Floorplan implementieren.

Soweit so gut.
Floorplan funktioniert und das Symbol (Lämpchen) ist auf dem Floorplan und kann angeklickt werden.
 
Nur leider kann ich die Geräte nur einschalten. Sobald sie eingeschaltet sind, passiert mit einem Klick auf das Symbol nichts mehr.

Welche Funktion steckt hinter dem Symbol? Im moment anscheinend nur On.
Muss ich noch ein Toggle in der Classdef für das ECMDDEvice implementieren,
oder könnte man irgendwie das toggle der Utils benutzen?

Gruss und Dank

rudolfkoenig

Falls das Problem auch in FHEMWEB auftaucht: die Liste der Befehle, die vom geraete zurueckkomt + eventMap muss on+off enthalten.

Netior


Hallo

Das Problem tritt auch in FHEMWEB auf.

in der classdef hab ich "set on cmd" und "set off cmd" implementiert.
Ich habe die eventmap nicht nochmals explizit in der cfg eingegeben.

Was meinst du mit "die Liste der Befehle, die vom geraete zurueckkomt"?

Ich habe neu noch ein "set on postproc" und "set off postproc" die jeweils "on" bzw "off" zurückgeben.

Es scheint als ob das Symbol nicht richtig weiss obs jetzt ein ist oder aus.

mfg

rudolfkoenig

>  Das Problem tritt auch in FHEMWEB auf.

Na dann uessen wir Uli nicht behelligen :)

>  Was meinst du mit "die Liste der Befehle, die vom geraete zurueckkomt"?

FHEMWEB kriegt mit "set <devicename> ?" die Liste der verfuegbaren Befehle raus, on und off muss hier nach dem text "Unknown argument ?, choose one of " auftauchen.

Was angezeigt wird, wird anhand STATE geprueft (bzw. das, was in der Ausgabe von list in der passenden Zeile steht). Das Angezeigte wird direkt als icon, aber auch nach der rueckuebersetzng mit eventmap als icon gesucht.

Netior

Hallo Rudolf

Ich hab ja ECMDDevices.
In der Classdef sind on und off definiert. Und wenn ich z.B. im Floorplan in der definition "toggle" benutzen will kommt deine erwähnte Fehlmeldung mit chose one of off or on...

Im WEBFHEM kann ich on oder off klicken, dass Symbol wechselt den Status korrekt solange ich die on off buttons neben dem symbol benutze.
Unter STATE steht off
Unter REadings hab ich drei Zeilen.
off => leer
on => leer
state => off

Ich habe ein postproc für das ECMDDevice welches das OK vom Ethersex rausfiltert und einen leeren String "" zurück gibt.
set on postproc {""} und set on postproc {""}
Ohne die postprocs steht unter state bei readings "on OK" oder entsprechend "off OK".

Jedenfalls siehts jetzt bei den states gleich aus wie bei einer structure die ich habe. Bei der Structure funktioniert das on off über das Symbol, aber bei den ECMDDevices nicht.

Sorry, ich schnalls nicht im Moment...

   

Dr. Boris Neubert

Zitat von: Netior schrieb am So, 10 Februar 2013 15:31Hallo Rudolf

Ich hab ja ECMDDevices.

Sorry, ich schnalls nicht im Moment...


Mach ein telnet zum FHEM und gib ein: set DeinGeraet ? und poste hier, was Du zurückbekommst.

ECDMDevice ist übrigens so programmiert, daß es genau die in der classdef definierten set-Befehle zurückgibt. Funktioniert bei mir mit FHEMWEB herrlich. Aber sehen wir erstmal, wie es bei Dir aussieht.

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Netior

Hallo Boris

Bei telnet auf fhem mit set xxxxx ? Kommt folgendes raus:

Unknown argument ?, choose one of on off

Ist doch eigentlich o.k. Oder nicht?

Dr. Boris Neubert

Zitat von: Netior schrieb am So, 10 Februar 2013 18:26Hallo Boris

Bei telnet auf fhem mit set xxxxx ? Kommt folgendes raus:

Unknown argument ?, choose one of on off

Ist doch eigentlich o.k. Oder nicht?

Das ist OK. Im Webfrontend solltest Du hinter der Lampe ein "on" und ein "off" sehen, welche das Gerät einschalten oder ausschalten.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Netior

Hallo boris

Das ist richtig, ich seh das symbol und daneben die schaltflächen on und off. Die schaltflächen funktionieren einwandfrei für on und off. Ich kann die geräte darüber ein bzw ausschalten.

Nur das symbol funkioniert nicht. Rsp. Ich wenn die lampe aus ist, state off, kann ich auf das lampensymbol klicken. Das gerät schalter ein, state wechselt auf on und symbol wechselt auf brennende lampe.

Drück ich nochmals auf das symbol, geschieht nichts. Drück ich aber die schaltfläche off, schaltet das gerät aus und das symbol wechselt auf die nicht leuchtende lampe.


rudolfkoenig

Vmtl. ist webCmd definiert, dieser ueberschreibt das automatische Umschalten von on/off .

Netior

hallo

Ja, ich habe webCmd zu beginn in der cfg definiert für ein dummy.
Habe jetzt aber für das ecmddevice webCmd on:off nochmals definiert. Auch das hilt nicht.
Gerät lässt sich nicht über Symbol ausschalten.

Muss an den webCmd noch was ran?

rudolfkoenig

KEIN webcmd.
Falls webCmd gesetzt ist, dann soll toggle nicht funktionieren.
Kann nur weiterhelfen, falls ich eine minimale aber komplette definition bekomme.

Netior

Hallo

Folgende Einträge hab ich in der Config unter anderem....

...


attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .

attr global statefile ./log/fhem.save
attr global userattr fm_fav fm_groups fm_name fm_order fm_type fm_view icon room_map structexclude webCmd
attr global verbose 3

define telnetPort telnet 7072 global

define WEB FHEMWEB 8083 global

define WEBS FHEMWEB 8084 global
attr WEBS smallscreen 1

define WEBP FHEMWEB 8085 global
attr WEBP hiddenroom Howto,Wiki,Details,Definition...,Unsorted,Select style,Event monitor
attr WEBP touchpad 1

# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog

define autocreate autocreate
attr autocreate autosave 1
attr autocreate device_room %TYPE
attr autocreate filelog ./log/%NAME-%Y.log
attr autocreate weblink 1
attr autocreate weblink_room Plots


dann weiter...


########################################################################
#FUNK
########################################################################
define rfm12 ECMD telnet 192.168.0.134:2701
attr rfm12 classdefs RFM12ASK=/home/pi/fhem/classdef/rfm12ask.classdef
attr rfm12 room Interfaces

define sz_UNTERBETTBEL ECMDDevice RFM12ASK 1 1
attr sz_UNTERBETTBEL room Schlafzimmer
attr sz_UNTERBETTBEL webCmd on:off


in rfm12ask.classdef steht folgendes:

set on cmd {"rfm12 2272 "."%Hauscode".",0,".sprintf(128+%GeraeteNr)." 63 3"}
set on postproc {""}
set off cmd {"rfm12 2272 "."%Hauscode".",0,".sprintf(0+%GeraeteNr)." 63 3"}
set off postproc {""}


Das Schalten funktioniert über on off, aber das Symbol schaltet immer nur Ein. Wenns ein ist, nicht mehr aus.

Ist da schon was ersichtlich was nicht gehen kann?

mfg

Tom_S

hallo,

möchte mich hier mal anschließen, da ich das selbe Verhalten beobachtet habe.
Wenn ich ein Dummy mit "attr setList on off" erstelle, wird durch klicken auf das Symbol der Zustand gewechselt.
Bei den ECMD Devices, egal ob Relaisports oder RFM12, wird durch Klicken auf das Symbol nur eingeschaltet. Wenn ich die Maus über das Symbol bewege, sehe ich in der Statuszeile im Browser was aufgerufen wird. Dort steht "fhem?ecmd.RelaisX=set RelaisX on&room=Unsorted". Auch wenn das on Symbol dargestellt wird.
Durch Zufall ist mir aufgefallen, das ein "Save Config" dieses Verhalten ändert.
Die Symbole die "on" waren können jetzt durch Klicken augeschaltet werden, und danach auch wieder ein. Das geht aber nur ein mal.

Auch kann der Status nicht in einem Notify verwendet werden. Ein notify RelaisX:on set irgendwas bewirkt nichts, genauso wie ein RelaisX:off.
Verwende ich nur notify RelaisX set irgendwas wird das Kommando beim Statuswechsel ausgeführt.

Ich verwende einen Pollin NetIO mit ethersex.

Viele Grüße
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

UliM

Moin,
wie verhält sich das icon in fhemweb?
Hruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Netior

Hallo UliM

In FHEMWEB:
Wenn das Icon aus ist, kann man es einschalten. Wenn es ein ist aber nicht mehr aus.
D.h. Icon off -> drücke Icon -> Icon on (Aktor schaltet ein)
        Icon on -> drücke Icon -> Icon on (keine Aktion)

mfg
Netior

Tom_S

Genau so verhält es sich bei mir auch. So wie ich es oben beschrieben habe (save config) ist nicht ganz richtig.
Ich schalte ein paar Devices ein, und mache dann ein "shutdown restart". Alle Symbole die zu diesem Zeitpunkt an waren lassen sich jetzt aus- und auch wieder einschalten. Allerdings nur ein mal.

mfg Tom_S
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

rudolfkoenig

Die FHEMWEB on/off Logik erzeugt in off Befehl, falls STATE auf on steht, sonst ein on.
Dabei wird fuer on/off die eventMap uebersetzung beruecksichtigt.
D.h. fuer die weitere Pruefung waere wichtig zu wissen, was in STATE steht.

Tom_S

Ich habe mal die Seite von einem Device angehängt. Da steht "on" drin wenn es an ist, sonst off


(siehe Anhang / see attachement)


mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

rudolfkoenig

Ist longpoll aktiv? Kann es sein, dass das Geraet kurzfristig andere Zustaende hat (set_on, etc)?
Letzteres kriegt man mit "inform timer" oder dem Event Monitor raus.

Netior


Hallo Rudolf

Der Event Manager zeigt folgendes:

2013-04-19 17:48:56 structure sz_LichtAlle off
2013-04-19 17:48:56 ECMDDevice sz_UNTERBETTBEL off:

Komisch das bei structure am ende kein ":" steht. Bei den ECMDDevices schon. Könnte das ein Problem sein?

mfg

Netior

rudolfkoenig

Ja, fuer das automatische toggle muss es on bzw. off sein, ohne Zusatz. Aber mit devStateIcon kann man es auch fuer on/off: einfach selbst stricken.

Netior

Hallo nochmals

Wo schleicht sich denn der ":" ein?
Es wäre doch super wenn der gar nicht erst kommt, so dass sich ECMDDevices genau wie die anderen benutzen lassen?
Log sagt folgendes...
2013.04.19 18:54:56 5: Cmd: >set sz_UNTERBETTBEL on<
2013.04.19 18:54:56 5: ...
2013.04.19 18:54:56 5: Postprocessing OK with perl command {""}.
2013.04.19 18:54:56 5: Triggering sz_UNTERBETTBEL (1 changes)
2013.04.19 18:54:56 5: Notify loop for sz_UNTERBETTBEL on:
2013.04.19 18:54:56 5: ...
2013.04.19 18:54:56 4: ECMDDevice sz_UNTERBETTBEL on

Warum ist beim Notify loop wieder der ":" am Ende, in der letzten Zeile nicht. Ich sehs nicht ein...

Tom_S

Ich glaube auch das der Doppelpunkt das Problem ist

bei ECMD sagt der Eventmonitor
2013-04-19 19:11:40 ECMDDevice FunkschalterA1 on:
2013-04-19 19:11:50 ECMDDevice FunkschalterA1 off:

beim Dummy nur
2013-04-19 19:12:05 dummy UbuntuTV off
2013-04-19 19:12:07 dummy UbuntuTV on

longpoll ist nicht aktiv

mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

Netior


Hallo

Hab noch ein bisschen getestet...

Ich möchte lediglich die simple Funktion das ich über das Icon die Beleuchtung ein und ausschalten kann. Kriege es aber nicht hin.

Config ist folgende:
define sz_UNTERBETTBEL ECMDDevice RFM12ASK 243 1
attr sz_UNTERBETTBEL room Schlafzimmer
attr sz_UNTERBETTBEL devStateIcon on:on:off off:off:on
attr sz_UNTERBETTBEL eventMap off:off on:on

- Wenn ich auf on oder off neben dem Icon klicke klappt alles einwandfrei. Es wird geschaltet und Icon wechselt.
- Wenn das Gerät on war, und ich fhem.cfg speichere, kann ich das Gerät über das Icon ausschalten und wieder einschalten. Dann aber nicht mehr ausschalten. Genau wie von Tom_S beschrieben.

Habe mal in der ECMDDevice.pm geschaut ob sich da ein : einschleicht, habe aber nichts gefunden. Und in State steht wirklich nur off und on.

Hat jemand noch eine Idee woran das liegen könnte, rsp wo ich noch suchen kann? Oder gibt es einen Workaround?
Wäre sehr sehr dankbar für tipps.

Gruss

Netior

rudolfkoenig

Falls die Events on: bzw.off: sind (mit Doppelpunkt), dann sollte das Attribut eher

attr sz_UNTERBETTBEL devStateIcon on.*:on:off off.*:off:on

sein.

Tom_S

ganz klar, so geht es natürlich. Man muß es halt für jedes Device festlegen.
Mich würde noch interesieren wo das "on:" "off:" her kommt. Von ethersex kommt ja nur ein "Ok" zürück.
Ohne postproc also "on: Ok"
Die postproc aus dem Wiki
> set on postproc {set on postproc {s/([OK|;]*)/success/; "$_" eq "success" ? "ok" : "error";}
bewirkt erstmal nichts. Ändert man "OK" in "Ok"
wird das "Ok" durch "success" ersetzt und in der Variable gespeichert, die dann "error" ausgiebt
wenn "$_" eq "success" (soweit ich das verstanden habe).
Wenn man "on" mit "error" tauscht
> set on postproc {s/([Ok|;]*)/success/; "$_" eq "success" ? "error" : "on";}
wir dann "ok: ok" zurück gegeben. Ob das in einer älteren Version mal funktioniert hat, kann ich nicht sagen. Durch "set on postproc {s/([Ok|;]*)/success/; "$_" eq "success" ? "error" : "";}" bleibt dann das "on:"
Müsste vom Modul kommen oder?

mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

Tom_S

hallo noch mal. Meine Perl Kentnisse beschränken sich leider auf "Selfhtml"
Ich habe in der 67_ECMDDevice.pm folgendes geändert

Ab Zeile 130
  if($postproc) {
        my %specials= ECMDDevice_DeviceParams2Specials($hash);
        my $command= EvalSpecials($postproc, %specials);
   $_= $value;
   Log 5, "Postprocessing $value with perl command $command.";
   $value= AnalyzePerlCommand(undef, $command);
  }

ersetzt durch

   $value= AnalyzePerlCommand(undef, "");

Damit ist das Problem behoben. Ob das so Ok ist weis ich nicht.

mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

Netior

Hallo Tom_S

Hast du noch einen postproc in der classdef? Wenn ja, welchen?
Benutzt du auch webCmd oder arbeitest du ohne?

D.h. du kannst jetzt direkt auf das icon klicken zum ein- und ausschalten?

mfg

Netior

Tom_S

nutze keine webcmd
postproc ist wie beschrieben
set on postproc {s/([Ok|;]*)/success/; "$_" eq "success" ? "error" : "";}

Ja, Icon wechselt den Status
Eventmonitor sagt on und off
Und auch die Statusabfrage in einem Notify geht jetzt

Vieleicht schaut ja noch mal einer der Ahnung hat drüber.

mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

Tom_S

hole dieses alte Thema mal wieder hoch. Bis jetzt hat das ja bei mir funktioniert.
Seit meinem heutigen Update, habe ca einen Monat keins mehr gemacht, habe ich folgendes Verhalten.
Beim Klick auf das Symbol wird der Befehl ausgeführt. Das Symbol wird allerdings erst durch neu laden der Webseite aktualisiert. Bei einem Klick auf die Schaltflächen ,,on" oder ,,off" wird das Symbol sofort aktualisiert.
An der 67_ECMDDevice.pm liegt es nicht.
Kann das jemand bestätigen?

Mit freundlichen Grüßen

ps: wenn ich die fhem.pl zurück tausche funktioniert es wieder.
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

UliM

Hi,
ist longpoll aktiv? Dann siehe hier: Link
Auch: verschwinden die icons nur in floorplan oder auch in fhemweb?
Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Tom_S

Hi UliM

longpoll ist nicht aktiv. Habe gerade mal getestet. Mit der fhem.pl (3236) geht es noch.
Dann geht aber "InternalVal" noch nicht. Tritt auch nur bei ECMD_Device auf. Dummys oder andere funktionieren wie sie sollen.

Die Icons verschwinden nicht. Der Status wird erst nach update der Webseite übernommen. Das verhalten ist auch im fhemweb genauso.

mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

UliM

Zitat von: Tom_S schrieb am Mi, 03 Juli 2013 20:42Das verhalten ist auch im fhemweb genauso.
Hi mfg :)
Dann bitte Betreff anpassen - floorplan sitzt nur Huckepack bei fhemweb, und das Problem scheint dort zu liegen.
Kann's nicht testen da ich kein ECMD hab.
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Tom_S

ich weis leider auch nicht wie ich es testen soll. Das Problem lieg nicht im Floorplan. Ich nutze keinen Floorplan. Es verhällt sich im fhemweb wie ich es beschrieben habe.

mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

rudolfkoenig

Verstehe ich es richtig:

Aenderungen eines ECMD Geraetes (und nur dieses) werden in FHEMWEB nicht automatisch angezeigt, trotz abgeschalteten longpoll (== es existiert in fhem.cfg ein "attr WEB longpoll 0").

Das ist doch so ok bzw. so bestellt...
Hier ist zu viel verwirrendes an Info, bitte berichtigen:
- wenn longpoll vorher nicht aktiv war, dann koennte das Icon sich auch nicht automatisch updaten
- longpoll ist jetzt per default aktiv, vorher war default inaktiv
- fhem.pl hat mit longpoll nix am Hut, nur 01_FHEMWEB.pm

Kannst Du bitte ein mini-konfig schicken, so dass ich das nachstellen kann, am besten mit einem EventMonitor oder "inform timer" Mitschnitt, da ich auch kein ECMD habe.

Tom_S

hallo UliM

attr WEB longpoll 0
war der entscheidente Hinweis. Das attr hatte ich nicht. Damit funktioniert es jetzt.
lag wohl am default. Die info hatte ich leider nicht. Warum es aber jetzt geht weis ich nicht. Habe nur das attr hinzugefügt.
Vielen Dank
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus