Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Frage bez. Sensoren abfrage..

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    - √ - Frage bez. Sensoren abfrage..

    Hallo zusammen..

    Ich benutze OpenHAB und EZ Control, Alle Schalter funktionieren Prima, auch iTunes habe ich (Grundfunktionen) hinbekommen...

    Leider habe ich aber keine Idee wie ich Sensoren ins System einbinde...

    Den Sensor kann ich über HTML abrufen z.b. http://xx.x.x.xx/control?callback=cn...ensor&number=1

    Dieser gibt mir dann einen Wert aus

    Code:
    cname({
    	"version": 16,
    	"type": "get_state_sensor",
    	"sensor": {
    		"number": 1,
    		"name": "DOR1",
    		"type": "windowopen",
    		"value": 100.0,
    		"state": [],
    		"unit": "boolean",
    		"utime": 1362168909,
    		"date": {
    			"weekday": "fr",
    			"day": 1,
    			"month": 3,
    			"year": 2013
    		},
    		"time": {
    			"hour": 22,
    			"min": 15,
    			"sec": 9
    		}
    	}
    })
    Dort ändert sich die value...

    Jetzt hätte ich gerne eine "ansicht", ob dieses Fenster offen oder zu ist im open hab...

    Wie mach ich so was :S


    Vielen dank für die hilfe...

    #2
    Hi,

    um die EZControl Interfaces ordentlich in openHAB zu integrieren, wird man wohl ein eigenes Binding implementieren müssen. Immerhin wird die dafür notwendige Protokollbeschreibung zum Download angeboten.

    Um mal eben einen Sensor-Wert abzufragen, kommst Du vermutlich auch mit dem HTTP-Binding und der REGEX-Transformation hin. Wie sieht das JSON Dokument denn aus, wenn Werte im Status-Feld drinstehen?

    Gruß,

    Thomas E.-E.
    Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

    Kommentar


      #3
      Hey... Danke für deine Antwort...

      So siehts aus wenn der Sensor Geschlossen anzeigt..

      Code:
      cname({
      	"version": 16,
      	"type": "get_state_sensor",
      	"sensor": {
      		"number": 1,
      		"name": "DOR1",
      		"type": "windowopen",
      		"value": 0.0,
      		"state": [],
      		"unit": "boolean",
      		"utime": 1362168909,
      		"date": {
      			"weekday": "fr",
      			"day": 24,
      			"month": 6,
      			"year": 2013
      		},
      		"time": {
      			"hour": 09,
      			"min": 14,
      			"sec": 2
      		}
      	}
      })

      Kommentar


        #4
        ah, ich dachte "state" hätte befüllt werden sollen. Und woran liest Du ab, dass das Fenster offen/geschlossen ist?
        Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

        Kommentar


          #5
          An der Value: 0.0 = Closed 100 = Open

          Kommentar


            #6
            @ teichsta... Habs immer noch nicht ...

            Kommentar


              #7
              ok, dann fangen wir mal der Item-Konfiguration an!

              Schau Dir mal in den demo.items an, wie man die Temperatur bei Yahoo abfragt und passe das mal soweit an, dass das auf Deinen Sensor paßt. Wenn Du soweit bist, machen wir uns an die Transformation-Regel (das, was beim demo XSLT(...) ist).
              Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

              Kommentar


                #8
                Hier das Item, ganz ohne Hilfe von teichsta wohl nicht möglich

                Code:
                Contact Door2	"Balkon [MAP(en.map):%s]"	<door> (sensor) { http="<[http://10.0.1.24/control?callback=cname&cmd=get_state_sensor&number=1/:60000:REGEX(.*value.:(.*?),.*)]" }
                Wichtig hier zu beachten ist : 60000 = Abfrage Intervall und
                Code:
                REGEX(.*value.:(.*?),.*)]" }
                welches mir im Log nur noch den Wert der value anzeigt ... (Der Wert der sich beim Sensor ändert... )

                So weit geht es nun schon ... doch wie kann ich jetzt aus diesem 0.0 oder 100 ein Tür offen oder zu symbol oder ähnliches in mein UI Zaubern ?

                Danke für euere Hilfe !!!

                Kommentar


                  #9
                  Hi,

                  Zitat von nickstar Beitrag anzeigen
                  So weit geht es nun schon ... doch wie kann ich jetzt aus diesem 0.0 oder 100 ein Tür offen oder zu symbol oder ähnliches in mein UI Zaubern ?
                  in diesem Fall müssen wir in zwei Schritten (mit zwei Items vorgehen) und eine Regel dazwischen schalten.

                  Das Problem ist, dass aktuell noch keine Transformations-Regel gibt, die Daten ersetzen kann (mit Issue 114 wird das anders aussehen).

                  Im ersten Schritt sammelst Du also die Werte ein, á la:

                  Code:
                  Number Door_Raw_Value  (sensor) { http="<[http://10.0.1.24/control?callback=cname&cmd=get_state_sensor&number=1/:60000:REGEX(.*value.:(.*?),.*)]" }
                  dann brauchst Du ein virtuelles Item

                  Code:
                  Contact	Door	"Balkon [MAP(de.map):%s]"	<door> (sensor)
                  und eine Regel, die den Wert in einen Bool'schen Wert ändert:

                  Code:
                  rule ConvertDoorData
                  when
                  	Item Door_Raw_Data received update
                  then
                  	if (Door_Raw_Data.state == 100.0) {
                  		Door.postUpdate(OPEN)
                  	} else {
                  		Door.postUpdate(CLOSED)
                  	}
                  end
                  Hope this helps,

                  Thomas E.-E.
                  Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                  Kommentar


                    #10
                    Also ich habe den Code wie geschrieben übernommen ...

                    Sehe ich richtig, das ich bei der Rule noch Item
                    Code:
                    Door_Raw_Data
                    zu Number
                    Code:
                    Door_Raw_Value
                    ändern muss damit die Rule auf das Item greift ?

                    leider zeigt es bei mir immer noch keinen status an ... weder in zahlen noch in Wort im UI :S

                    Kommentar


                      #11
                      Und noch ne 2te frage , wie binde ich das item in das Sitemap ? ist ja kein Switch oder so :S

                      Kommentar


                        #12
                        So... Nun ist alles geschafft ... Hier noch für all diejenigen, die wie ich manchmal einfach auf dem Schlauch stehen...

                        1. Item (Abfrage) Muss genau so sein !!!!
                        Code:
                        Number Door_Raw_Value  (GR_sensor) { http="<[http://xx.xx.xx.xx/control?callback=cname&cmd=get_state_actuator&number=1/:60000:REGEX(.*value.: (.*?),.*)]" }
                        2. Item (Darstellung)
                        Code:
                        Contact	Door				"Balkon [MAP(en.map):%s]" 	<door>
                        3. Rule (Regel zur Status Übernahme)
                        Code:
                        rule "ConvertDoorData"
                        when
                        	Item Door_Raw_Value received update
                        then
                        	if (Door_Raw_Value.state ==100.0) {
                        		Door.postUpdate(OPEN)
                        	} else {
                        		Door.postUpdate(CLOSED)
                        	}
                        end
                        4. Sitemap Darstellung
                        Code:
                        Text item=Door icon="door"

                        Natürlich kann man mit den Sensoren auch Aktoren schalten... z.b.

                        Code:
                        rule "ConvertDoorData"
                        when
                        	Item Door_Raw_Value received update
                        then
                        	if (Door_Raw_Value.state ==100.0) {
                        		Door.postUpdate(OPEN)
                        		sendCommand(led_dach,ON)
                        	} else {
                        		Door.postUpdate(CLOSED)
                        		sendCommand(led_dach,OFF)
                        	}
                        end
                        Wenn man z.b. mit einem Schalter etwas schalten möchte über Openhub


                        Danke nochmals an Techsta !!!!

                        Kommentar


                          #13
                          also das mit der Tür klappt Prima.. jetzt wollte ich einen wandschalter der auch 0 oder 100 sein kann als Controller hinzufügen… das geht alles super nur wenn z.b. der wandschalter das Licht bad steuert und dieser auf 0.0 ist und ich im openhab dann das licht einschalte schaltet es nach der nächsten abfrage wieder aus :S

                          Code:
                          rule "schalter1"
                          when
                          	Item schalter1 received update
                          then
                          	if (schalter1.state ==100.0) {
                          		sendCommand(bad_ON)
                          	
                          	} else {
                          		sendCommand(bad_OFF)
                          	
                          	}
                          end

                          das ist meine Rule … jetzt habe ich die
                          Item
                          Code:
                          <item> changed [from <state>] [to <state>]
                          gefunden nur weis ich nicht wie einbauen … :S

                          Kommentar


                            #14
                            hier sind ein paar Dinge drin versteckt!

                            1. ItemNamen sollten alle mit einem Großbuchstaben beginnen, um sie leichter gegenüber Variablen, Methoden und Schlüsselworten unterscheiden zu können
                            2. In openHAB (so schreibt man den Projektnamen übrigens) unterscheiden wir zwischen Commands und States. Der State ist der Zustand eines Items während mit einem Command den Zustand eines Items ändern möchte. In Deinem Beispiel erhälst Du die Nachricht, dass sich der Zustand des Schalters1 geändert hat und sendest daraufhin das Kommando, dass sich der Schalter ändern soll. Es soll sich tatsächlich aber nur der Zustand des Items ändern (also das Lampen-Icon soll angehen).

                            Richtiger sollte die Regel also:

                            Code:
                            rule "schalter1"
                            when
                            	Item schalter1 received update
                            then
                            	if (schalter1.state ==100.0) {
                            		Bad.postUpdate(ON)
                            	
                            	} else {
                            		Bad.postUpdate(OFF)
                            	
                            	}
                            end
                            Darüber hinaus gibt es in openHAB das spezielle AutoUpdate-Binding, was by default eingeschaltet. Hier sorgt das senden eines Commands auf ein Item automatisch dafür, dass dessen Status entsprechend dem Command gesetzt wird. Das ist insbesondere für System wichtig, an denen man den Status nicht richtig ablesen kann.

                            In Deinem Fall geht das aber und Du solltest das Schalter-Item entsprechend so konfigurieren:

                            Code:
                            Item Schalter1 "Schalter 1 [%s]" { http="...", autoupdate="false"}
                            Gruß,

                            Thomas E.-E.
                            Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

                            Kommentar


                              #15
                              Habe beides wie gewünscht eingebaut ...


                              Code:
                              rule "schalter1"
                              when
                              	Item schalter1 received update
                              then
                              	if (schalter1.state ==100.0) {
                              		schalter1.postUpdate(ON)
                              		sendCommand(Music,ON)
                              	
                              	} else {
                              		schalter1.postUpdate(OFF)
                              		sendCommand(Music,OFF)
                              	
                              	}
                              end
                              Nur wenn der Schalter jetzt auf 0.0 also Off Steht und ich im App die Musik anmache schaltet sie nach der nächsten, automatischen abfrage wieder aus

                              Kommentar

                              Lädt...
                              X