MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    • Profile
    • Following 0
    • Followers 1
    • Topics 29
    • Posts 450
    • Groups 1
    R Offline
    1. Home
    2. rkorell
    3. Posts
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Posts

    Recent Best Controversial
    • RE: Update Master Branch

      @sdetweil :-)
      Dear Sam,

      for all of your effort and all of your deep knowledge, all the kindness you are constantly showing

      • for me you ARE the Master Mind!

      THANKS for all of this!

      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: MMM-MQTTScreenOnOff - alternative to PIR

      @olex.s @sdetweil , dear all,

      As you know for sure I‘m really a fan of MMM-Pir - for (my) good reasons.
      For a friend of mine I‘ve build a second mirror and because he is heavily engaged in smarten his home :-) I‘ve considered to use alternatives to a PIR sensor - because they are definitely unsmart…
      With this I‘ve seeked for an integration for his homee solution which is not really capable for MQTT and randomly found a really cool device which I would like to share with you, guys!
      This is not a „motion“ sensor but a real „presence“ sensor (radar based, not infrared) which even is able to identify a silently sitting person!
      In addition this genius thingy talks MQTT, delivers the „presence“ status in a JSON object and so it is absolutely easy to use it with magic mirror and the herein presented module MQTTScreenOnOff.

      This sensor is pretty expensive and invented and build by a small startup here in Germany 🇩🇪 .
      You can find this sensor here.
      The webpage is in German but for some reason the default UI is in English :-)
      From my perspective this is defnitely worth the money (this is the fourth radar sensor I‘ve bought but the first one which is in the near of „working“)

      The mqttTopic transmitted is: „tele/senvolon/STATE“ and the mqttPayloadOccupancyField is „presence“.
      (The middle part is configurable in the sensor‘s UI, I‘ve decided to use vendor‘s name).

      I REALLY miss the nice animation and the dimming of MMM-Pir but I‘m definitely thinking about to use this sensor as well.
      (Which would be a major effort because my Mirror has an exact slot for the PIR sensor which is round and this sensor is squared so I will have to do some rough wood-work. On the other hand I MAY place the sensor away from the mirror on the opposite wall or in an other place and hide the hole from PIR sensor ….)

      Nice MQTT module - thanks for this idea!

      Warmest regards,
      Ralf

      posted in System
      R
      rkorell
    • RE: Update Master Branch

      @rkorell

      Ich höre jetzt hier auf, das es zu Doppelpostings kommt. Sam ist hier definitiv das MASTER MIND, der dir sicher helfen kann und wird…

      Gruß,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Update Master Branch

      @chris47803 said in Update Master Branch:

      @rkorell said in Update Master Branch:

      @chris47803 Achso, das was Sam meint und die Fehlermeldungen bedeuten: Du hast offensichtlich in den genannten Modulen Änderungen vorgenommen…
      Das „merkt“ das Update und verweigert sich…

      Gruß,
      Ralf

      Ja habe ich.
      In calender die Anzahl der Ausgaben von 10 auf 20 geändert.
      Bei den anderen Modulen weiß ich nicht mehr was ich geändert habe.

      Wie Sam schrieb: Solche Änderungen niemals im Quellcode der Mirror-Programme vornehmen…
      Stets: Parameter des Modulaufrufs in der Datei config.js oder (Stil-Anpassungen) in der Datei custom.css …

      WENN Änderungen dennoch vorgenommen werden, ist es immer eine gute Idee, diese Änderungen zu dokumentieren oder gut kenntlich zu machen, da sonst updates nicht mehr funktionieren.
      wenn Du nicht mehr weißt, WAS Du gemacht hast, hbist Du schon auf einem guten Weg: Du hast ja die modifizierten Dateien umbenannt - dann sind die Änderungen ja enthalten. Beim git pull hast Du die neuen (originalen) Dateien erhalten.
      Hier hilft die der Unix Befehl „diff“, der dir die Unterschiede zweier Dateien ausgibt…

      Gruß,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Update Master Branch

      @chris47803 said in Update Master Branch:

      @rkorell said in Update Master Branch:

      @chris47803 Und noch einen (dann höre ich auch auf :-) ) : Prüfe auch, ob du das Update überhaupt benötigst…
      Wenn Dich die Meldung stört, kannst du diese auch im autoupdater einfach deaktivieren…

      Gruß,
      Ralf

      Wie überprüfe ich das?

      Im changelog der aktuellen Version hier.

      Gruß,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Update Master Branch

      @chris47803 said in Update Master Branch:

      @sdetweil

      Ich habe diese Dateien jetzt umbenannt.

      git pull ausgeführt.

      reboot

      Nun startet MM nicht mehr.

      Mist, da war ich fünf Minuten zu spät…

      Soweit ich mich (dunkel!) erinnere benötigst Du ausser git pull noch einen nmp install ……
      Ich glaube aber, der war irgendwie speziell.
      Bin nicht sicher.
      Sam weiß das ganz bestimmt.
      Forum-Suche hilft Dir aber: mirror doesn‘t start gibt‘s dutzende Male …

      Gruß,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Update Master Branch

      @chris47803 Und noch einen (dann höre ich auch auf :-) ) : Prüfe auch, ob du das Update überhaupt benötigst…
      Wenn Dich die Meldung stört, kannst du diese auch im autoupdater einfach deaktivieren…

      Gruß,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Update Master Branch

      @chris47803 Achso, das was Sam meint und die Fehlermeldungen bedeuten: Du hast offensichtlich in den genannten Modulen Änderungen vorgenommen…
      Das „merkt“ das Update und verweigert sich…

      Gruß,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Update Master Branch

      @chris47803 Zudem ist es IMMER eine SEHR gute Idee, das Update script von Sam (@sdetweil ) zu nutzen.
      Das Forum ist voll von postings, die bei selbstgemachten Updates Probleme melden …

      Gruß & viel Erfolg,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: AHT20 Humidity + Temperature Sensor

      @JohnGalt Really COOL!
      Thanks for sharing!
      Ralf

      posted in Requests
      R
      rkorell
    • RE: AHT20 Humidity + Temperature Sensor

      @JohnGalt cool.
      congratulations.
      It’s may be worth to show the community what you have done?

      Regards,
      Ralf

      posted in Requests
      R
      rkorell
    • RE: [MMM-NounishReminder] Nounish Event Reminder for your MM

      @xppaicyber
      Cool!
      If I understood your structure and approach correctly than this nice module could be used for any of recurring events, because the events are declared in the config.js definition of the module.
      Unfortunately you have hard coded the header of the module

      header.innerHTML = "NOUNISH REMINDERS";
      

      Do you think it is possible to get this header configurable as well?
      This would be really great!

      Thanks a lot!
      Warm regards,
      Ralf

      posted in Showcase
      R
      rkorell
    • RE: V2.31.0 unable to start

      @sdetweil yes :-)

      posted in Troubleshooting
      R
      rkorell
    • RE: V2.31.0 unable to start

      @htilburgs :-)
      this is correct on console window.
      console didn’t know about display unless you’re telling him what display to use.
      As far as I know you can use

      DISPLAY=:0.0 
      

      as a hint upfront your terminal command.
      At least for xrandr this works and is necessary.

      DISPLAY=:0.0 xrandr --output HDMI-1 --off
      

      is my xrandr console equivalent for the “normal” command

      xrandr --output HDMI-1 --off
      

      I’m not THAT sure if this is true for wlr-randr .
      (Because wlr-randr do have this environment variable “WAYLAND_DISPLAY” which is not the case for xrandr…)

      HTH & regards,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: AHT20 Humidity + Temperature Sensor

      @JohnGalt
      just seen while re-reading my last posting:

      nodehelper.js (the part of the module which is communicating with the python program and so with the sensor) is calling python3 :

      exec(`python3 ./modules/MMM-BME280/bme280.py ${deviceAddr}`, (error, stdout) => {
      

      but the python script itself is referencing python 2 (see above post, source code of bme280.py, 1st line:

      #!/usr/bin/python
      

      I guess this must match and doesn’t …
      So may this is the cause of your problems.

      And if this is true it is may really hard to get this working because you may run in several incompatibilities and library-conflicts …

      Regards,
      Ralf

      posted in Requests
      R
      rkorell
    • RE: AHT20 Humidity + Temperature Sensor

      the python script you are looking for is bme280.py

      #!/usr/bin/python
      #--------------------------------------
      #    ___  ___  _ ____
      #   / _ \/ _ \(_) __/__  __ __
      #  / , _/ ___/ /\ \/ _ \/ // /
      # /_/|_/_/  /_/___/ .__/\_, /
      #                /_/   /___/
      #
      #           bme280.py
      #  Read data from a digital pressure sensor.
      #
      #  Official datasheet available from :
      #  https://www.bosch-sensortec.com/bst/products/all_products/bme280
      #
      # Author : Matt Hawkins
      # Date   : 21/01/2018
      #
      # https://www.raspberrypi-spy.co.uk/
      #
      #--------------------------------------
      import smbus
      import sys
      import time
      from ctypes import c_short
      from ctypes import c_byte
      from ctypes import c_ubyte
      
      DEVICE = 0x76 # Default device I2C address
      
      try: #override device address like '0x77'
          DEVICE = int(sys.argv[1], 16)
      except:
          pass
      
      bus = smbus.SMBus(1) # Rev 2 Pi, Pi 2 & Pi 3 uses bus 1
                           # Rev 1 Pi uses bus 0
      
      def getShort(data, index):
        # return two bytes from data as a signed 16-bit value
        return c_short((data[index+1] << 8) + data[index]).value
      
      def getUShort(data, index):
        # return two bytes from data as an unsigned 16-bit value
        return (data[index+1] << 8) + data[index]
      
      def getChar(data,index):
        # return one byte from data as a signed char
        result = data[index]
        if result > 127:
          result -= 256
        return result
      
      def getUChar(data,index):
        # return one byte from data as an unsigned char
        result =  data[index] & 0xFF
        return result
      
      def readBME280ID(addr=DEVICE):
        # Chip ID Register Address
        REG_ID     = 0xD0
        (chip_id, chip_version) = bus.read_i2c_block_data(addr, REG_ID, 2)
        return (chip_id, chip_version)
      
      def readBME280All(addr=DEVICE):
        # Register Addresses
        REG_DATA = 0xF7
        REG_CONTROL = 0xF4
        REG_CONFIG  = 0xF5
      
        REG_CONTROL_HUM = 0xF2
        REG_HUM_MSB = 0xFD
        REG_HUM_LSB = 0xFE
      
        # Oversample setting - page 27
        OVERSAMPLE_TEMP = 2
        OVERSAMPLE_PRES = 2
        MODE = 1
      
        # Oversample setting for humidity register - page 26
        OVERSAMPLE_HUM = 2
        bus.write_byte_data(addr, REG_CONTROL_HUM, OVERSAMPLE_HUM)
      
        control = OVERSAMPLE_TEMP<<5 | OVERSAMPLE_PRES<<2 | MODE
        bus.write_byte_data(addr, REG_CONTROL, control)
      
        # Read blocks of calibration data from EEPROM
        # See Page 22 data sheet
        cal1 = bus.read_i2c_block_data(addr, 0x88, 24)
        cal2 = bus.read_i2c_block_data(addr, 0xA1, 1)
        cal3 = bus.read_i2c_block_data(addr, 0xE1, 7)
      
        # Convert byte data to word values
        dig_T1 = getUShort(cal1, 0)
        dig_T2 = getShort(cal1, 2)
        dig_T3 = getShort(cal1, 4)
      
        dig_P1 = getUShort(cal1, 6)
        dig_P2 = getShort(cal1, 8)
        dig_P3 = getShort(cal1, 10)
        dig_P4 = getShort(cal1, 12)
        dig_P5 = getShort(cal1, 14)
        dig_P6 = getShort(cal1, 16)
        dig_P7 = getShort(cal1, 18)
        dig_P8 = getShort(cal1, 20)
        dig_P9 = getShort(cal1, 22)
      
        dig_H1 = getUChar(cal2, 0)
        dig_H2 = getShort(cal3, 0)
        dig_H3 = getUChar(cal3, 2)
      
        dig_H4 = getChar(cal3, 3)
        dig_H4 = (dig_H4 << 24) >> 20
        dig_H4 = dig_H4 | (getChar(cal3, 4) & 0x0F)
      
        dig_H5 = getChar(cal3, 5)
        dig_H5 = (dig_H5 << 24) >> 20
        dig_H5 = dig_H5 | (getUChar(cal3, 4) >> 4 & 0x0F)
      
        dig_H6 = getChar(cal3, 6)
      
        # Wait in ms (Datasheet Appendix B: Measurement time and current calculation)
        wait_time = 1.25 + (2.3 * OVERSAMPLE_TEMP) + ((2.3 * OVERSAMPLE_PRES) + 0.575) + ((2.3 * OVERSAMPLE_HUM)+0.575)
        time.sleep(wait_time/1000)  # Wait the required time  
      
        # Read temperature/pressure/humidity
        data = bus.read_i2c_block_data(addr, REG_DATA, 8)
        pres_raw = (data[0] << 12) | (data[1] << 4) | (data[2] >> 4)
        temp_raw = (data[3] << 12) | (data[4] << 4) | (data[5] >> 4)
        hum_raw = (data[6] << 8) | data[7]
      
        #Refine temperature
        var1 = ((((temp_raw>>3)-(dig_T1<<1)))*(dig_T2)) >> 11
        var2 = (((((temp_raw>>4) - (dig_T1)) * ((temp_raw>>4) - (dig_T1))) >> 12) * (dig_T3)) >> 14
        t_fine = var1+var2
        temperature = float(((t_fine * 5) + 128) >> 8);
      
        # Refine pressure and adjust for temperature
        var1 = t_fine / 2.0 - 64000.0
        var2 = var1 * var1 * dig_P6 / 32768.0
        var2 = var2 + var1 * dig_P5 * 2.0
        var2 = var2 / 4.0 + dig_P4 * 65536.0
        var1 = (dig_P3 * var1 * var1 / 524288.0 + dig_P2 * var1) / 524288.0
        var1 = (1.0 + var1 / 32768.0) * dig_P1
        if var1 == 0:
          pressure=0
        else:
          pressure = 1048576.0 - pres_raw
          pressure = ((pressure - var2 / 4096.0) * 6250.0) / var1
          var1 = dig_P9 * pressure * pressure / 2147483648.0
          var2 = pressure * dig_P8 / 32768.0
          pressure = pressure + (var1 + var2 + dig_P7) / 16.0
      
        # Refine humidity
        humidity = t_fine - 76800.0
        humidity = (hum_raw - (dig_H4 * 64.0 + dig_H5 / 16384.0 * humidity)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * humidity * (1.0 + dig_H3 / 67108864.0 * humidity)))
        humidity = humidity * (1.0 - dig_H1 * humidity / 524288.0)
        if humidity > 100:
          humidity = 100
        elif humidity < 0:
          humidity = 0
      
        return temperature/100.0,pressure/100.0,humidity
      
      def main():
      
        # (chip_id, chip_version) = readBME280ID()
        # print("Chip ID     :", chip_id)
        # print("Version     :", chip_version)
      
        temperature,pressure,humidity = readBME280All()
      
        print(round(temperature,1),round(humidity,1),round(pressure,1))
      
      if __name__=="__main__":
         main()
      

      @JohnGalt said in AHT20 Humidity + Temperature Sensor:

      Remote I/O error

      The given error seems to by not a program but an I/O problem.
      I’m not familiar with this sensor so I do not know how to connect and - most important - how to figure out the right “deviceAddress” - it seems that there is the error located.

      Either the address isn’t the correct one or the IO channel is somehow broken.
      For the latter came in my mind: if this is a I2C conected device - do you have enabled I2C on your Raspi?

      I’ve tried to “understand” what happens in the python script above as well as in the C-exmaple program on the Bosch product page for bme280 sensor, but didn’t got it…

      Regards,
      Ralf

      posted in Requests
      R
      rkorell
    • RE: V2.31.0 unable to start

      @htilburgs said in V2.31.0 unable to start:

      -bash: wlr_randr: command not found

      shouldn’t it be wlr-randr ?

      Regards,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: MMM-Homeassistant-sensors doesn't work anymore, recommended alternative.

      @sdetweil said in MMM-Homeassistant-sensors doesn't work anymore, recommended alternative.:

      git clone

      Dear Sam, you are SO right!
      Sorry - typo …
      Have edited above in my first post.
      Thanks for paying attention!

      Regards,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: MMM-Homeassistant-sensors doesn't work anymore, recommended alternative.

      @flac_rules
      If you git-pull the second one - which seems to have the exact same name - the git-clone (<- edited!) will fail.
      But if you rename the „original“ directory with e.g.

      mv MMM-homeassistant-sensors MMM-homeassistant-sensors_original 
      

      you should be able to issue a git clone (<- edited) for the second variant, install this and give it a try.
      If t his doesn‘t work, either - delete the newly created directory and re-rename the original one …

      Regards,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: AHT20 Humidity + Temperature Sensor

      @JohnGalt Good morning,
      do you have connected the sensors locally to the same PI where the mirror is running?
      What script are you using and what output this sends?
      If you are able to modify these scripts to deliver a JSON output you may can use MMM-JsonValue for displaying the results…

      Regards,
      Ralf

      posted in Requests
      R
      rkorell
    • 1 / 1