Hallo Zusammen,
ich verzweifle derzeit an der Darstellung meiner 8 Port Ausgangskarte.
Ich würde gerne die komplette Bezeichnung, im folgenden Format darstellen,
Lüfter 1: Eingeschaltet
Lüfter 2: Ausgeschaltet
Lüfter 3: Eingeschaltet
Lüfter 4: Ausgeschaltet
Statt wie derzeit alles in einer Zeile, was die Texte stark begrenzt.
Da sieht das dann eher so aus:
L1: ON L2:OFF L3:ON L4:OFF
Kann man das irgendwie hinbiegen ?
Ein Hinweis zum Ansatz wäre auch schon eine Hilfe.
Gruss R.
das sollte mit 8 user readings gehen die die eine zeile in 8 einzelne readings verwandeln. statt user readings ist ein notify das die 8 readings mit setreading erzeugt vielleicht effizienter.
um die 8 readings dann in der raumübersicht zusammen anzuzeigen kannst die readingsGroup verwenden.
gruss
andre
Danke für den Hinweis,
ehrlich gesagt, muss ich das erstmal versuchen nachzuvollziehen, da ich die
Funktionen "setreading" und "readingsGroup" noch nicht kenne.
Gruss R.
Hallo Justme1968,
irgendwie scheint das mit dem groupReading nicht so zu arbeiten, wie ich mir das erhoft habe.
Ich habe übrigens zuerst einen Fehler bekommen, das die Funktion "groupReading" unbekannt sei.
Nachdem ich "Update check" gemacht habe, sah ich, das diese Funktion erst nach einem Update verfügbar ist.
Mein Stand ist also ca. 1 Stunde alt.
erstmal meine Codezeilen:
#
# Luefter Steuerung
#
define flAusgangsKarte OWDevice 29.E11210000000 10
attr flAusgangsKarte alias Lueftersteuerung
attr flAusgangsKarte model DS2408
attr flAusgangsKarte polls PIO.0,PIO.1,PIO.2,PIO.3
attr flAusgangsKarte group Steuerung
attr flAusgangsKarte room Flur
attr flAusgangsKarte stateFormat { sprintf("Bit00 %s Bit01: %s Bit02%s Bit03: %s", getBooleanStateOutputOnOff(ReadingsVal("flAusgangsKarte","PIO.0",0)),getBooleanStateOutputOnOff(ReadingsVal("flAusgangsKarte","PIO.1",0)),getBooleanStateOutputOnOff(ReadingsVal("flAusgangsKarte","PIO.2",0)),getBooleanStateOutputOnOff(ReadingsVal("flAusgangsKarte","PIO.3",0))) ;; }
attr flAusgangsKarte userReadings Bit00 { ReadingsVal("flAusgangsKarte","PIO.0","-")},Bit01 { ReadingsVal("flAusgangsKarte","PIO.1","-")},Bit02 { ReadingsVal("flAusgangsKarte","PIO.2","-")},Bit03 { ReadingsVal("flAusgangsKarte","PIO.3","-");; }
define stateflAusgangsKarte readingsGroup flAusgangsKarte:Bit00 flAusgangsKarte:Bit01 flAusgangsKarte:Bit02
attr stateflAusgangsKarte alias Ausgangsrelais
attr stateflAusgangsKarte mapping {'flAusgangsKarte:Bit00' => 'Luefter 1:', 'flAusgangsKarte:Bit02' => 'Luefter 2:', 'flAusgangsKarte:Bit03' => 'Luefter 3:'}
attr stateflAusgangsKarte group Steuerung
attr stateflAusgangsKarte room Flur
Hier die Ausgabe dazu.
(siehe Anhang / see attachement)
Hierbei habe ich jetzt folgende "Aufgabenstellung" zu lösen:
- Obwohl ich ein Mapping angegeben habe, wird dieses nicht verwendet, aber der Alias Name
- Wie bekomme ich jetzt das geänderte Reading hin, welche ich unterhalb noch als Vergleich
mit angezeigt bekomme
Derzeit wird nur "0" und "1" angezeigt.
- Das Datum der letzten Aktualisierung will ich nicht darstellen.
- Der Devicename oberhalb des Status ist in meinem Fall überflüssig, da ich ihn ja links stehen habe.
Gruss R.
- beim maping device und reading mit punkt trennen. nicht mit doppelpunkt.
- attribut noheading
- attribut notime
gruss
andre
Hallo Andre,
danke fuer die Hinweise:
Der Code sieht jetzt so aus und die Ausgabe stimmt jetzt soweit auch.
define stateflAusgangsKarte readingsGroup flAusgangsKarte:Bit00 flAusgangsKarte:Bit01 flAusgangsKarte:Bit02
attr stateflAusgangsKarte alias Ausgangsrelais
attr stateflAusgangsKarte mapping {'flAusgangsKarte.Bit00' => 'Luefter 1:', 'flAusgangsKarte.Bit01' => 'Luefter 2:', 'flAusgangsKarte.Bit02' => 'Luefter 3:'}
attr stateflAusgangsKarte group Steuerung
attr stateflAusgangsKarte room Flur
attr stateflAusgangsKarte noheading
attr stateflAusgangsKarte notime
(siehe Anhang / see attachement)
Jedoch würde ich gerne noch das StateFormat entsprechend anpassen:
attr flAusgangsKarte stateFormat { sprintf("Bit00 %s Bit01: %s Bit02%s Bit03: %s", getBooleanStateOutputOnOff(ReadingsVal("flAusgangsKarte","PIO.0",0)),getBooleanStateOutputOnOff(ReadingsVal("flAusgangsKarte","PIO.1",0)),getBooleanStateOutputOnOff(ReadingsVal("flAusgangsKarte","PIO.2",0)),getBooleanStateOutputOnOff(ReadingsVal("flAusgangsKarte","PIO.3",0))) ;; }
attr flAusgangsKarte userReadings Bit00 { ReadingsVal("flAusgangsKarte","PIO.0","-")}, Bit01 { ReadingsVal("flAusgangsKarte","PIO.1","-")}, Bit02 { ReadingsVal("flAusgangsKarte","PIO.2","-")},Bit03 { ReadingsVal("flAusgangsKarte","PIO.3","-");; }
So habe ich das für die untere Ausgabe gelöst, weiss jetzt nur nicht, wie ich das StateFormat für einen readingGroups ändere ?
Gruss R.
wenn du sowieso jeden ausgang als eigenes reading hast (pio.x) kannst du die in der readingsGroup direkt verwenden und brauchst kein user reading.
das die 0/1 kannst du mit valueFormat mappen. {($VALUE eq '0')?'Aus':'Ein'}
gruss
andre
Hi,
ich habe folgendes Formate verwendet:
attr stateflAusgangsKarte valueFormat{(($VALUE eq '0')?'Aus':'Ein'),(($VALUE eq '0')?'Aus':'Ein'),(($VALUE eq '0')?'Aus':'Ein')}
und bekam dann immer so was:
ZitatUnmatched ( in regex; marked by <-- HERE in m/ valueFormat{(( <-- HERE $VALUE[ :;]/ at fhem.pl line 1974, <$fh> line 100.
Und FHEM hat sich verabschiedet ..
Edit:
Dann habe ich das hier versucht:
attr stateflAusgangsKarte valueFormat {(($VALUE eq '0')?'Aus':'Ein')}
So geht es dann doch ... Puh
Wie geht das denn, wenn ich unterschiedliche Werte habe ?
Gruss R.
dann musst du dir eine perl funktion die z.b. mit diversen if/elsif/else den passenden wert für deine $VALUE zurück liefert.
gruss
andre
hallo Andre,
was für einen Übergabeparameter hätte diese Funktion ?
Wäre es aus meinem Beispiel "flAusgangsKarte.Bit00".
oder hat diese Funktion dann mehr als einen Parameter ?
Kann man mit "readingsGroup" auch "webCmd" verwenden ?
Erste Versuche haben nette Meldungen gebracht.
Gruss R.
die funktion hat keine übergabeparameter. du kannst aber $DEVICE, $READING und $VALUE verwenden. zurück gibst du immer den format string für genau eine zeile.
die readingsGroup ist nur zur reinen anzeige von werten. du kannst damit nicht schalten, speichern oder sonst etwas tun. nur anzeigen.
was möchtest du denn mit dem webCmd machen ?
gruss
andre
Hi,
Ich wollte den Ausgang manuell ein u. Ausschalten.
Gruss R.
das geht erst mal nicht.
ich schaue gerade ich icons einbauen kann. danach vielleicht kommandos.
gruss
andre
Kein Problem.
Hi zusammen,
mit diesem Post bin ich schon mal ein bißchen in die richtige Richtung gekommen...
Wie kann ich mir denn über die Abfrage der einzelnen "sensed" Werte eines DS2408 mit OWFS eine Anzeige realisieren, die mir in FHEM - am besten per Symbol - zeigt, ob die entsprechende vom Relais gesteuerte Pumpe gerade läuft oder nicht, oder der Reedkontakt (Fenster oder Garagentor) offen oder geschlossen ist (also Fenster auf/zu; Garage auf/zu) ... ?
Ich komme da nicht so ganz weiter ... :(
Danke für Eure Hilfe ... ak323.
Ich habe so etwas ähnliches mit den Statusleds meiner Heizung meiner Heizung gemacht, mittels clonedummy
(http://uploads.tapatalk-cdn.com/20160318/48562fc94a321c78388db52b95ad64b6.jpg)(http://uploads.tapatalk-cdn.com/20160318/9e95e28d3d2648c59a39d21a5aafec93.jpg)
Sent from my iPad using Tapatalk
... Wenn Du mir jetzt noch verrätst wie Du die Ports Abfrage in FHEM definiert hast, habe ich vielleicht auch bald so schöne Anzeigen !!
Danke.
Was meinst du mit Portabfrage?
Heizung_Interface ist DS2408
Internals:
CFGFN ./FHEM/heizung_ow.cfg
CHANGED
DEF 29.245712000000 5
IODev OWServer
LAST_READ_FAILED 0
NAME Heizung_Interface
NR 221
NTFY_ORDER 50b-Heizung_Interface
STATE sensed.0: 0 sensed.1: 0 sensed.2: 0 sensed.3: 1 sensed.4: 0 sensed.5: 1 sensed.6: 1 sensed.7: 0 alarm: 1
TYPE OWDevice
Helper:
Dblog:
Sensed.0:
Dblog:
TIME 1458367402.57826
VALUE 0
Sensed.1:
Dblog:
TIME 1458367844.34527
VALUE 0
Sensed.2:
Dblog:
TIME 1458367844.34527
VALUE 0
Sensed.3:
Dblog:
TIME 1458367844.34527
VALUE 1
Sensed.4:
Dblog:
TIME 1458367670.36641
VALUE 0
Sensed.5:
Dblog:
TIME 1458367432.34614
VALUE 1
Sensed.6:
Dblog:
TIME 1458367582.11777
VALUE 1
Sensed.7:
Dblog:
TIME 1458367432.34614
VALUE 0
Readings:
2016-03-19 07:10:54 alarm 1
2016-03-19 07:10:54 sensed.0 0
2016-03-19 07:10:54 sensed.1 0
2016-03-19 07:10:54 sensed.2 0
2016-03-19 07:10:54 sensed.3 1
2016-03-19 07:10:54 sensed.4 0
2016-03-19 07:10:54 sensed.5 1
2016-03-19 07:10:54 sensed.6 1
2016-03-19 07:10:54 sensed.7 0
2016-03-19 07:10:54 state sensed.0: 0 sensed.1: 0 sensed.2: 0 sensed.3: 1 sensed.4: 0 sensed.5: 1 sensed.6: 1 sensed.7: 0 alarm: 1
Fhem:
address 29.245712000000
alerting 1
bus bus.0
interfaces state
interval 5
getters:
PIO.0
PIO.1
PIO.2
PIO.3
PIO.4
PIO.5
PIO.6
PIO.7
PIO.ALL
PIO.BYTE
address
crc8
family
id
latch.0
latch.1
latch.2
latch.3
latch.4
latch.5
latch.6
latch.7
latch.ALL
latch.BYTE
locator
por
power
r_address
r_id
r_locator
sensed.0
sensed.1
sensed.2
sensed.3
sensed.4
sensed.5
sensed.6
sensed.7
sensed.ALL
set_alarm
strobe
type
polls:
sensed.0
sensed.1
sensed.2
sensed.3
sensed.4
sensed.5
sensed.6
sensed.7
setters:
LCD_H/clear
LCD_H/home
LCD_H/message
LCD_H/onoff
LCD_H/screen
LCD_H/screenyc
LCD_M/clear
LCD_M/home
LCD_M/message
LCD_M/onoff
LCD_M/screen
LCD_M/screenyc
PIO.0
PIO.1
PIO.2
PIO.3
PIO.4
PIO.5
PIO.6
PIO.7
PIO.ALL
PIO.BYTE
latch.0
latch.1
latch.2
latch.3
latch.4
latch.5
latch.6
latch.7
latch.ALL
latch.BYTE
por
set_alarm
strobe
state:
sensed.0
sensed.1
sensed.2
sensed.3
sensed.4
sensed.5
sensed.6
sensed.7
Attributes:
IODev OWServer
event-min-interval sensed.*:600
event-on-change-reading sensed.0,sensed.1,sensed.2,sensed.4,sensed.5,sensed.3,sensed.6,sensed.7
event-on-update-reading sensed.0,sensed.1,sensed.2,sensed.4,sensed.5,sensed.3,sensed.6,sensed.7
icon it_net
model DS2408
room OneWire_Devices
uncached 0
Clonedummy cloned dieses Device, und hier definiere ich was ich anzeigen will
Internals:
CFGFN ./FHEM/heizung_neu.cfg
CHANGED
DEF Heizung_Interface sensed.5
NAME c_HZ_BETRIEBSBEREIT
NOTIFYDEV Heizung_Interface
NOTIFYSTATE sensed.5
NR 308
NTFY_ORDER 50-c_HZ_BETRIEBSBEREIT
STATE 1
TYPE cloneDummy
Helper:
Dblog:
Sensed.5:
Dblog:
TIME 1458368032.55871
VALUE 1
Readings:
2016-03-19 07:13:52 _state sensed.5: 1
2015-08-20 10:35:13 alarm 0
2014-09-15 10:25:29 sensed.0 0
2014-09-15 10:25:30 sensed.1 0
2014-09-15 10:25:30 sensed.2 0
2014-09-15 10:25:31 sensed.3 0
2014-09-15 10:25:31 sensed.4 0
2016-03-19 07:13:52 sensed.5 1
2014-09-15 10:25:32 sensed.6 1
2014-09-15 10:25:32 sensed.7 0
2014-09-14 10:10:32 set_alarm 0
2016-03-19 07:14:55 state active
Attributes:
alias HZ_BETRIEBSBEREIT
cloneIgnore sensed.0,sensed.1,sensed.2,sensed.3,sensed.4,sensed.6,sensed.7
devStateIcon 1:led.green 0:led.off
event-on-change-reading sensed.5
event-on-update-reading sensed.5
group HEIZUNGSTATUS
icon max_wandthermostat
room Heizung
stateFormat sense
Eben in diesem Fall nur sensed.5
Sent from my iPad using Tapatalk
... sorry, aber ich kapier das nicht ... ich will doch nur in FHEM ein Symbol in rot darstellen, wenn ein "sensed" (wie bei Dir sensed.5) = 0 ist in weiß darstellen, wenn sensed.5 = 1 ist in rot ....
Könnte mir bitte jemand helfen, wie ich das in der .cfg definieren muss ... ?
DANKE.
#####################################################################################
Update 08.10.2017:
https://forum.fhem.de/index.php/topic,77736.0.html (https://forum.fhem.de/index.php/topic,77736.0.html)