Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. csuser

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    C
    • Profile
    • Following 0
    • Followers 0
    • Topics 6
    • Posts 16
    • Best 0
    • Groups 1

    csuser

    @csuser

    Starter

    0
    Reputation
    18
    Profile views
    16
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    csuser Follow
    Starter

    Latest posts made by csuser

    • On event/trigger in JavaScript Klasse verwenden

      Hallo,
      ich bin Momentan dabei die JavaSkripte für die Beleuchtung in meinem Heim zu verbessern/überarbeiten.

      Ich würde gerne eine Klasse für die Beleuchtung anlegen.
      Das Skript sieht folgendermaßen aus:

      //room and light names
      var roomName = "livingRoom"
      var lightName = "light1"
      
      //physical light
      var stateID = 'zigbee.0.00158d000484f150.state'/*Switch state*///'zigbee.0.group_1.state'/*Switch state*/
      var brighnessID = 'zigbee.0.00158d000484f150.brightness'/*Brightness*///'zigbee.0.group_1.brightness'/*Brightness*/
      var colortempID = 'zigbee.0.00158d0001aa6b65.colortemp'/*Color temperature*///'zigbee.0.group_1.colortemp'/*Color temperature*/
      var rgbcolorID = ""
      
      //physical button
      var buttonClickID = 'shelly.0.SHSW-1#500291F0A6E5#1.Relay0.Input'/*Input / Detach*/
      var buttonDoubleClickID = ""
      var buttonHoldID = ""
      
      
      class light {
          constructor(roomName, lightName, stateID, brightnessID, colorTempID, RGBcolorID, buttonClickID, buttonDoubleClickID, buttonHoldID) {
              this.roomName = roomName
              this.lightName = lightName
              this.stateID = stateID
              this.brighnessID = brightnessID
              this.colorTempID = colorTempID
              this.RGBcolorID = RGBcolorID
              this.buttonClickID = buttonClickID
              this.buttonDoubleClickID = buttonDoubleClickID
              this.buttonHoldID = buttonHoldID
      
              log(this.stateID)   //debug
      
              //set new folder for the light and objects for state, brightness etc. but only if parameter was given to constructor
              if(this.stateID != ""){
                  //create userdata object for virtual light 
                  createState(("0_userdata.0." + roomName + "." + this.lightName + ".state"), false, function() {
                      //Init physical light
                      log(this.stateID)   //debug
                      log(stateID)    //debug
                      log("0_userdata.0." + this.roomName + "." + this.lightName + ".state")  //debug
                      log(getState("0_userdata.0.livingRoom.light1.state").val)   //debug
                      log(getState("0_userdata.0." + roomName + "." + this.lightName + ".state").val) //debug
                      setState(this.stateID, getState("0_userdata.0." + roomName + "." + this.lightName + ".state").val)
                  });
              }
              if(this.brighnessID != ""){
                  createState(("0_userdata.0." + this.roomName + "." + this.lightName + ".brightness"), 255, function() {
                      setState(this.brighnessID, getState("0_userdata.0." + roomName + this.lightName + ".brightness").val)
                  });
              } 
              if(this.colorTempID != ""){
                  createState(("0_userdata.0." + this.roomName + "." + this.lightName + ".colorTemp"), 100, function() {
                      setState(this.colorTempID, getState("0_userdata.0." + roomName + "." + this.lightName + ".colorTemp").val)
                  });
              } 
              if(this.RGBcolorID != ""){
                  createState(("0_userdata.0." + this.roomName + "." + this.lightName + ".RGBcolor"), false, function() {
                      setState(this.RGBcolorID, getState("0_userdata.0." + roomName + "." + this.lightName + ".RGBcolor").val)
                  });
              } 
          }
      
          //turn on/off light
          setLight(trigger){
              if(getState(this.stateID).val){
                  setState(this.stateID, false);
                  setState("0_userdata.0." + this.roomName + "." + this.lightName + ".state", false, true)
                  log("Light turned off by " + trigger)
              }
              else{
                  setState(this.stateID, true);
                  setState("0_userdata.0." + this.roomName + "." + this.lightName + ".state", true, true)
                  log("Light turned on by " + trigger)
              }
          }
          //Methods for changing brightness, colortemp and rgb
      
      
          //Trigger shelly button click (momentary switch) 
          //on({id: this.buttonClickID, val: true}, function (obj) {    //not working
              //this.setLight("button") //Not working
          //})  //not working
      
          //Trigger button double tap and hold
      
          //Trigger from siri over "0_userdata.0.livingRoom.light1.state"
      
      }
      
      const livingRoomLight = new light(roomName, lightName, stateID, brighnessID, colortempID, rgbcolorID, buttonClickID, buttonDoubleClickID, buttonHoldID);
      
      
      
      

      Es wird ein virtuelles Licht durch createState im Konstruktor angelegt. Je nach Übergabe-Parameter werden neben dem Objekt State auch die Objekte Brightness, ColorTemp und RGB angelegt. Zudem wird das “physische Licht” (in dem Fall Zigbee) initialisiert - state false, brightness 255 etc.

      Es wurde testhalber eine Methode angelegt um das Licht erstmal ein/auszuschalten. Die Methode funktioniert, wenn der Trigger ausserhalb der Klasse angelegt wird.

      Ich würde gerne nun mehrer Trigger in der Klasse anlegen (ab Zeile 71). Im Regelfall gibt es pro Raum einen Lichtschalter (Shelly/Zigbee) und einen virtuellen Schalter mittels Siri (yahka) welcher die durch createState angelegten Objekte in userdata ändert.
      Wie kann ich am besten einen Trigger in der Klasse realisieren? Das obere Beispiel funktioniert jedenfalls nicht und der Output sieht folgendermaßen aus:

      00:25:50.872	info	javascript.0 (2155) Start javascript script.js.living_room.living_room_light_oop
      00:25:50.885	info	javascript.0 (2155) script.js.living_room.living_room_light_oop: zigbee.0.00158d000484f150.state
      00:25:50.886	info	javascript.0 (2155) script.js.living_room.living_room_light_oop: registered 0 subscriptions and 0 schedules
      00:25:50.962	info	javascript.0 (2155) script.js.living_room.living_room_light_oop: undefined
      00:25:50.962	info	javascript.0 (2155) script.js.living_room.living_room_light_oop: zigbee.0.00158d000484f150.state
      00:25:50.963	info	javascript.0 (2155) script.js.living_room.living_room_light_oop: 0_userdata.0.undefined.undefined.state
      00:25:50.963	info	javascript.0 (2155) script.js.living_room.living_room_light_oop: false
      00:25:50.964	warn	javascript.0 (2155) at Object.<anonymous> (script.js.living_room.living_room_light_oop:40:21)
      00:25:50.964	info	javascript.0 (2155) script.js.living_room.living_room_light_oop: null
      00:25:50.965	warn	javascript.0 (2155) at Object.<anonymous> (script.js.living_room.living_room_light_oop:41:40)
      00:25:50.967	warn	javascript.0 (2155) at Object.<anonymous> (script.js.living_room.living_room_light_oop:41:17)
      00:25:50.971	warn	javascript.0 (2155) at Object.<anonymous> (script.js.living_room.living_room_light_oop:46:44)
      00:25:50.973	warn	javascript.0 (2155) at Object.<anonymous> (script.js.living_room.living_room_light_oop:46:17)
      00:25:50.977	warn	javascript.0 (2155) at Object.<anonymous> (script.js.living_room.living_room_light_oop:51:44)
      00:25:50.979	warn	javascript.0 (2155) at Object.<anonymous> (script.js.living_room.living_room_light_oop:51:17)
      

      Die Objekte in Userdata werden aber angelegt:
      cf00899b-00d8-4f8b-92c3-cfedce5977d3-image.png

      Warum wird this.stateID in Zeile 27 ausgegeben aber in Zeile 33 nicht?

      Sollte die Klasse funktionieren, wie kann ich Objekte in neuen (leeren) Skripten anlegen ohne jedes Mal die Klasse kopieren zu müssen?
      Mir ist bekannt das man mittels TypeSkript Funktionen auslagern kann.
      Muss ich mit der Klasse später auch diesen Weg gehen?

      Für heute genug IOBroker - ich geh jetzt ins Bett.

      Grüße
      Christoph

      Der IOBroker wurde vor ein paar Tagen von 3.x.x auf 4.0.24 geupdatet.
      Node.js v12.22.6
      NPM 6.14.15

      Raspberry ist Model 4 mit 4gb RAM

      posted in JavaScript
      C
      csuser
    • RE: Shelly wird im Subnetz über MQTT nicht erkannt

      Mir ist eben ein Fehler in der Schematic aufgefallen. Die IP des Shellys ist 192.168.179.41.

      posted in Off Topic
      C
      csuser
    • RE: Shelly wird im Subnetz über MQTT nicht erkannt

      @dos1973 Der Shelly hatte bereits die neuste Firmware installiert. Es war nur eine Beta vorhanden, welche ich auch mal Installiert habe. CoIoT war auch bereits aktiviert.

      posted in Off Topic
      C
      csuser
    • Shelly wird im Subnetz über MQTT nicht erkannt

      Hallo,
      ich versuche einen Shelly Plug welcher sich in einem Subnetzwerk befindet mit dem Shellyadapter zu verbinden.
      Leider wird dieser aktuell (noch) nicht gefunden.

      Das Netzwerk besteht aus einem Fritzbox Modem und einer danach geschalteten Fritzbox welche als Router fungiert .
      Netzplan siehe Schematik.
      Screenshot 2021-05-27 at 22.52.20.png

      Über das Wlan des Fritzbox Modems ist der Shelly verbunden.

      Der MQTT-Port ist 1884 und ist auch in dem Fritzbox Router freigegeben. Auf den Fotos sind die Einstellungen des Shellys, die des Adapters und die Portweiterleitung der Fritzbox zu sehen. Die IP des Shellys ist: 192.168.179.41, die IP des IOBrokers: 192.168.178.97.
      shelly.jpg
      Shelly 3.PNG
      shelly 4.PNG
      Shelly 2.jpg

      Dem Shelly habe ich eine feste IP über das Fritzbox Modem gegeben.

      Der Shelly wurde bereits über den Fritzbox Router zum Testen hinzugefügt (funktioniert soweit auch).
      Das Wlan des Routers ist aber am Installationsort nicht vorhanden.

      Ich habe die alten Shelly-Adapter-Datenpunkten gelöscht, da ich mir erhofft habe das der Plug dann erkannt wird.
      Leider ohne Erfolg...

      Hat jemand eine Idee woran das Problem liegen könnte das der Shelly aus dem Subnetz nicht erkannt wird?

      Vielen Dank schonmal im vorraus!

      Grüße
      Christoph

      posted in Off Topic
      C
      csuser
    • RE: Javascript: Zeittrigger löst nicht/manchmal aus

      @csuser Habe das Problem lösen können. Da der Pi einen Tag vorher aufgesetzt wurde, war die Uhrzeit 1 Stunde hinterher. Daraufhin habe ich wie oben beschrieben die Zeitzone des Pi´s aktuallisiert. Wie sich herausgestellt hat wurde die Zeit im IOBroker nicht aktuallisiert. Nach einem Reboot stimmt auch die Zeit des IOBrokers und die Trigger lösen entsprechend aus.

      posted in JavaScript
      C
      csuser
    • Javascript: Zeittrigger löst nicht/manchmal aus

      Guten Abend, ich probiere mich seit heute an Javascript und habe ein Problem mit der Zeittriggerfunktion. Die Funktion löst nicht/nur manchmal aus, ich konnte aber nicht feststellen warum es das eine Mal geht/nicht geht.

      Ich habe mehrere "Schreibweisen" ausprobiert.
      timetrigger1.PNG
      timetrigger3.PNG
      Zudem habe ich die Zeit auf dem Raspberry eingestellt (warum auch immer musste ich das 2x heute schon machen...).
      raspi1.PNG

      Es die läuft die Javascript-Adapterversion 4.8.4. IOBroker ist auf 4.1.11.

      Hat jemand eine Idee woran das Problem liegen könnte?

      Noch eine Frage am Rande:
      Ich möchte gerne eine Heizungsteuerung einrichten, die je nach Anwesenheitsmodus zu entsprechenden Zeiten schaltet (Arbeitsmodus, Urlaubsmodus Zuhause, Homeoffice...). Kann ich die Zeit wie im Bild unten zu sehen, als Variable ausführen? Oder gibt es eine andere Möglichkeit einen variablen Zeittrigger zu erstellen? (Habe aktuell 12 verschiedene Schaltzeiten - wird unübersichtlich...)
      timetrigger2.PNG

      Ich bedanke mich schonmal für Eure Hilfe!
      Grüße
      Christoph

      posted in JavaScript
      C
      csuser
    • RE: Xiaomi WXKG03LM Taster lässt sich nicht koppeln

      @Asgothian
      Hallo, ich habe heute nochmal versucht den Schalter mit dem Conbee Stick zu verbinden (habe rausgefunden das dieser eigentlich kompatibel sein müsste), leider wieder ohne Erfolg. Danach wurde das Pairing mit dem Zigbee Adapter gestartet, und nach etlichen Versuchen wurde der Taster erkannt... Das Problem hatte ich allerdings mit einigen anderen Zigbeegeräten auch schon.

      Es handelt sich um diesen Stick
      https://www.phoscon.de/de/conbee2

      Der Adapter heißt im iobroker nicht Conbee sondern "deConz ZigBee"

      posted in Hardware
      C
      csuser
    • RE: Xiaomi WXKG03LM Taster lässt sich nicht koppeln

      @asgothian
      Habe den Conbee Adapter (v 1.3.11) in Nutzung

      Der Taster lässt sich in den Pairing Mode schalten. (10sek. halten, LED fängt an zu blinken)

      Auf der Conbee Website gibt es eine Auflistung mit allen kompatiblen Geräten. Wenn ich beispielsweise ein neues unkompatibles Gerät auf dem Conbee nutzen möchte, gibt es dann eine Möglichkeit diesen dort zum Laufen zu bringen? Kenne mich im Bereich Zigbee nicht so gut aus..

      Grüße
      Christoph

      posted in Hardware
      C
      csuser
    • Xiaomi WXKG03LM Taster lässt sich nicht koppeln

      Guten Abend, heute habe ich einen Conbee2 Stick erhalten. Ich habe versucht den Xiaomi Taster einzubinden, leider ohne Erfolg. Vor dem Einbinden in den Conbee, wurde der Taster im Zigbeeadapter unter Geräteauflistung gelöscht.

      Seit ca 2h versuche ich den Taster wieder in den Zigbeeadapter einzubinden. Ich habe bereits die Batterie ausgebaut, den Zigbeeadapter neugestarte, den Stick ein/ausgesteckt usw... Ein weiterer baugleicher Taster ist ebenfalls im Einsatz. Dieser hatte sich "fast" ohne Probleme wieder integrieren lassen.

      Soweit ich weiß basiert der Adapter doch auf zigbee2mqtt? Gibt es eine Möglichkeit per Konsole ein pairing zu starten? Wenn ja, welche Befehle benötige ich? Oder gibt es noch andere Möglichkeiten den Taster wieder einzubinden?

      Und noch eine Frage am Rande: Wie kann ich unbekannte/nicht kompatible Geräte in den Conbee einbinden? Ich würde gerne möglichst alle Zigbee devices über den Conbee laufen lassen, da der CC2531 sich in den vergangenen Monaten als unzuverlässig herausgestellt hat..

      Ich bedanke mich schonmal für Eure Hilfe!

      Grüße
      Christoph

      iobroker läuft auf einem RPi 4 2gb RAM

      posted in Hardware
      C
      csuser
    • RE: Blockly Zeitsteuerung funktioniert nicht/nur bedingt

      @paul53 Habe in einem anderen Skript den Debugprint ausführen lassen. Scheinbar geht die Zeit eine Stunde nach. Jetz funktioniert das ganze auch so wie gedacht :D. Wie kann ich denn die Uhrzeit aktualisieren/das setzen der Uhrzeit automatisieren? Schonmal danke für Debug-Print Tipp.

      posted in Blockly
      C
      csuser
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo