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

    Posts

    Recent Best Controversial
    • 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
    • RE: How to add custom weather icons

      @kool said

      Bumping this back up. Pleeeease help

      Dear @kool ,

      if you are using url as suggested by Sam ( @sdetweil ), you are nearly done.
      As far as I can see from my rookie perspective you do have some redundancies in your config.js (e.g. the unit section: units, tempUnits, windUnits) ) but this shouldn’t disturb.
      As far as I understood you can delete these icontables because you do not use the icon-font but try to use some images from sigle file-URLs instead - so you can delete the whole section iconTable {} with all entries.

      In addition you have to adapt (see above, Sam’s tip) the URL of all you images in your custom.css file.
      (pls. double check, if the files are really in these locations)
      You wrote in your current css

      .weatherforecast .wi-day-sunny {
      content: url("/home/kool/MagicMirror/css/icons/6fas/day.svg") !important;
      
      }
      

      IF your weather-icon files are really in this directory (/home/kool/MagicMirror/css/icons/6fas/) than your css should be as follows:

      .weatherforecast .wi-day-sunny {
       content: url("/css/icons/6fas/day.svg");
      
      

      You do not need the !important flag (in my case)

      second wrong thing besides the URL is your qualifier.

      you are using

      .weatherforecast .wi-something  ....
      

      This cannot be recognized because .weatherforecast is not defined.

      At first you have to decide if you want to have different icons for the current weather and for the weather forecast.
      (In my case this is true).
      IF you would like to have this you have to differentiate the two instances of the weather-module by a “classes” definition.

      For example your first instance of the weather module (current weather) than should be

         module: "weather",
          position: "top_right", // Adjust position as needed
          classes: "weather_current",
          config: {
              weatherProvider: "openmeteo", // Specify the Open-Meteo provider
              apiBase: "https://api.open-meteo.com/v1", // REQUIRED: Base URL for Open-Meteo
      
             lat: xxxx, // REQUIRED: Latitude of the location
              lon: xxxx, // REQUIRED: Longitude of the location
              maxNumberOfDays: 8, // OPTIONAL: Number of forecast days (default is 5)
              pastDays: 0, // OPTIONAL: Number of past days of data to include (default is 0)
         units: "imperial", // Set this to 'imperial' for Fahrenheit and miles per hour
              tempUnits: "imperial", // Make sure to match with 'imperial'
              windUnits: "imperial",
              type: "current", // OPTIONAL: Change to "current" if only current weather data is desired
      
       
          }
      },
      

      (pay attention for the third line: classes: “weather_current”, )
      THIS is your qualifier if you are about to diffrentiate between current weather and weather forecast image-wise.
      (“weather_current” is just an example! you can name it like you want every name is suitable and OK, only pay attention that all of these namings are strictly case sensitive, so Weather is NOT the same as weather"

      Your correct line for custom.css than is:

      .weather_current .wi-day-sunny {
       content: url("/css/icons/6fas/day.svg");
      
      

      and the same dance than for your second instance with DIFFERENT classes-clause in config.js
      (e.g. a " classes: “weather_forecast”, " in the definition of the second weather instance ) results in a custom.css entry like this:

      .weather_forecast .wi-day-sunny {
       content: url("/css/icons/some_other_directory_with_smaller_icons/day.svg");
      
      

      Because the “forecast instance” of the weather module is (in my case) organized as table I found it really useful to differentite these logos - big ones for current, smaller ones for the forecast:

      ScreenFloat Bildschirmfoto von Sublime Text am 14_04_2025, 13_38_51 14_04_2025, 13-38-51.jpg

      If You do NOT like to differentiate the current and forecast instance you do NOT need the classes-phrase in config.js and your correct qualifier is the name of the module (so “weather” ) and your custom.css entry is like this:

      .weather .wi-day-sunny {
       content: url("/css/icons/6fas/day.svg");
      
      

      And this than is valid for both instances.

      Keep in mind that there are a LOT more weather conditions than the two times 5 conditions you have defined in your current custom.css!

      my own definition for the current weather for your reference:

      
      .weather_current .wi-fog  {
      content: url("/css/icons/current/wsymbol_0007_fog.png");
      }
      .weather_current .wi-cloudy  {
      content: url("/css/icons/current/wsymbol_0002_sunny_intervals.png");
      }
      .weather_current .wi-cloudy-windy {
      content: url("/css/icons/current/wsymbol_0004_black_low_cloud.png");
      }
      .weather_current .wi-rain  {
      content: url("/css/icons/current/wsymbol_0018_cloudy_with_heavy_rain.png");
      }
      .weather_current .wi-showers  {
      content: url("/css/icons/current/wsymbol_0017_cloudy_with_light_rain.png");
      }
      .weather_current .wi-thunderstorm  {
      content: url("/css/icons/current/wsymbol_0024_thunderstorms.png");
      }
      .weather_current .wi-snow  {
      content: url("/css/icons/current/wsymbol_0019_cloudy_with_light_snow.png");
      }
      .weather_current .wi-snowflake-cold {
      content: url("/css/icons/current/wsymbol_0020_cloudy_with_heavy_snow.png");
      }
      .weather_current .wi-na {
      content: url("/css/icons/current/wsymbol_0999_unknown.png");
      } 
      
      .weather_current .wi-day-sunny  {
        content: url("/css/icons/current/wsymbol_0001_sunny.png");
      }
      .weather_current .wi-day-cloudy  {
        content: url("/css/icons/current/wsymbol_0043_mostly_cloudy.png");
      }
      .weather_current .wi-day-cloudy-gusts  {
        content: url("/css/icons/current/wsymbol_0004_black_low_cloud.png");
      }
      .weather_current .wi-day-cloudy-windy  {
        content: url("/css/icons/current/wsymbol_0004_black_low_cloud.png");
      }
      .weather_current .wi-cloudy-windy  {
        content: url("/css/icons/current/wsymbol_0004_black_low_cloud.png");
      }
      .weather_current .wi-day-fog  {
        content: url("/css/icons/current/wsymbol_0007_fog.png");
      }
      .weather_current .wi-day-hail  {
        content: url("/css/icons/current/wsymbol_0015_heavy_hail_showers.png");
      }
      .weather_current .wi-day-haze  {
        content: url("/css/icons/current/wsymbol_0005_hazy_sun.png");
      }
      .weather_current .wi-day-lightning  {
        content: url("/css/icons/current/wsymbol_0016_thundery_showers.png");
      }
      .weather_current .wi-day-rain  {
        content: url("/css/icons/current/wsymbol_0085_extreme_rain_showers.png");
      }
      .weather_current .wi-day-rain-mix  {
        content: url("/css/icons/current/wsymbol_0009_light_rain_showers.png");
      }
      .weather_current .wi-day-rain-wind  {
        content: url("/css/icons/current/wsymbol_0010_heavy_rain_showers.png");
      }
      .weather_current .wi-day-showers  {
        content: url("/css/icons/current/wsymbol_0018_cloudy_with_heavy_rain.png");
      }
      .weather_current .wi-day-sleet  {
        content: url("/css/icons/current/wsymbol_0087_heavy_sleet_showers.png");
      }
      .weather_current .wi-day-sleet-storm  {
        content: url("/css/icons/current/wsymbol_0089_heavy_sleet.png");
      }
      .weather_current .wi-day-snow  {
        content: url("/css/icons/current/wsymbol_0011_light_snow_showers.png");
      }
      .weather_current .wi-day-snow-thunderstorm  {
        content: url("/css/icons/current/wsymbol_0057_thundery_snow_showers.png");
      }
      .weather_current .wi-day-snow-wind  {
        content: url("/css/icons/current/wsymbol_0053_blowing_snow.png");
      }
      .weather_current .wi-day-sprinkle  {
        content: url("/css/icons/current/wsymbol_0009_light_rain_showers.png");
      }
      .weather_current .wi-day-storm-showers  {
        content: url("/css/icons/current/wsymbol_0018_cloudy_with_heavy_rain.png");
      }
      .weather_current .wi-day-sunny-overcast  {
        content: url("/css/icons/current/wsymbol_0002_sunny_intervals.png");
      }
      .weather_current .wi-day-thunderstorm  {
        content: url("/css/icons/current/wsymbol_0024_thunderstorms.png");
      }
      .weather_current .wi-day-windy  {
        content: url("/css/icons/current/wsymbol_0060_windy.png");
      }
      .weather_current .wi-solar-eclipse  {
        content: url("/css/icons/current/wsymbol_0005_hazy_sun.png");
      }
      .weather_current .wi-hot  {
        content: url("/css/icons/current/wsymbol_0045_hot.png");
      }
      .weather_current .wi-day-cloudy-high  {
        content: url("/css/icons/current/wsymbol_0006_mist.png");
      }
      .weather_current .wi-day-light-wind  {
        content: url("/css/icons/current/wsymbol_0060_windy.png");
      }
      .weather_current .wi-night-clear  {
        content: url("/css/icons/current/wsymbol_0008_clear_sky_night.png");
      }
      .weather_current .wi-night-alt-cloudy  {
        content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png");
      }
      .weather_current .wi-night-alt-partly-cloudy  {
        content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png");
      }
      .weather_current .wi-night-alt-cloudy-gusts  {
        content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png");
      }
      .weather_current .wi-night-alt-cloudy-windy  {
        content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png");
      }
      .weather_current .wi-night-alt-hail  {
        content: url("/css/icons/current/wsymbol_0031_heavy_hail_showers_night.png");
      }
      .weather_current .wi-night-alt-lightning  {
        content: url("/css/icons/current/wsymbol_0032_thundery_showers_night.png");
      }
      .weather_current .wi-night-alt-rain  {
        content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png");
      }
      .weather_current .wi-night-alt-rain-mix  {
        content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png");
      }
      .weather_current .wi-night-alt-rain-wind  {
        content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png");
      }
      .weather_current .wi-night-alt-showers  {
        content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png");
      }
      .weather_current .wi-night-alt-sleet  {
        content: url("/css/icons/current/wsymbol_0029_sleet_showers_night.png");
      }
      .weather_current .wi-night-alt-sleet-storm  {
        content: url("/css/icons/current/wsymbol_0029_sleet_showers_night.png");
      }
      .weather_current .wi-night-alt-snow  {
        content: url("/css/icons/current/wsymbol_0028_heavy_snow_showers_night.png");
      }
      .weather_current .wi-night-alt-snow-thunderstorm  {
        content: url("/css/icons/current/wsymbol_0075_thundery_snow_showers_night.png");
      }
      .weather_current .wi-night-alt-snow-wind  {
        content: url("/css/icons/current/wsymbol_0071_blowing_snow_night.png");
      }
      .weather_current .wi-night-alt-sprinkle  {
        content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png");
      }
      .weather_current .wi-night-alt-storm-showers  {
        content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png");
      }
      .weather_current .wi-night-alt-thunderstorm  {
        content: url("/css/icons/current/wsymbol_0032_thundery_showers_night.png");
      }
      .weather_current .wi-night-cloudy  {
        content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png");
      }
      .weather_current .wi-night-cloudy-gusts  {
        content: url("/css/icons/current/wsymbol_0044_mostly_cloudy_night.png");
      }
      .weather_current .wi-night-cloudy-windy  {
        content: url("/css/icons/current/wsymbol_0044_mostly_cloudy_night.png");
      }
      .weather_current .wi-night-fog  {
        content: url("/css/icons/current/wsymbol_0064_fog_night.png");
      }
      .weather_current .wi-night-hail  {
        content: url("/css/icons/current/wsymbol_0039_cloudy_with_heavy_hail_night.png");
      }
      .weather_current .wi-night-lightning  {
        content: url("/css/icons/current/wsymbol_0032_thundery_showers_night.png");
      }
      .weather_current .wi-night-partly-cloudy  {
        content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png");
      }
      .weather_current .wi-night-rain  {
        content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png");
      }
      .weather_current .wi-night-rain-mix  {
        content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png");
      }
      .weather_current .wi-night-rain-wind  {
        content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png");
      }
      .weather_current .wi-night-showers  {
        content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png");
      }
      .weather_current .wi-night-sleet  {
        content: url("/css/icons/current/wsymbol_0029_sleet_showers_night.png");
      }
      .weather_current .wi-night-sleet-storm  {
        content: url("/css/icons/current/wsymbol_0029_sleet_showers_night.png");
      }
      .weather_current .wi-night-snow  {
        content: url("/css/icons/current/wsymbol_0027_light_snow_showers_night.png");
      }
      .weather_current .wi-night-snow-thunderstorm  {
        content: url("/css/icons/current/wsymbol_0075_thundery_snow_showers_night.png");
      }
      .weather_current .wi-night-snow-wind  {
        content: url("/css/icons/current/wsymbol_0028_heavy_snow_showers_night.png");
      }
      .weather_current .wi-night-sprinkle  {
        content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png");
      }
      .weather_current .wi-night-storm-showers  {
        content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png");
      }
      .weather_current .wi-night-thunderstorm  {
        content: url("/css/icons/current/wsymbol_0032_thundery_showers_night.png");
      }
      
      
      

      HTH & good luck!
      Ralf

      posted in Development
      R
      rkorell
    • RE: MMM-Universal-Pir - Desparately seeking right command

      @atwist said in MMM-Universal-Pir - Desparately seeking right command:

      DISPLAY=0.0 xrandr --output HDMI-2 --off

      Dear @atwist, guessing from the distance is quite hard.
      You didn’t provide system information.
      From your told story you can try to check two things which came in my mind:

      1. PIR sensor: does this work correctly / is it adjustd correctly (on my sensor there are two screws to adjust distance and sensitivity.
        I had SERIOUS truble with theses settings and motion detection as my Pi5 gettih hot (caused by insufficient cooling)
      2. Screen/Monitor itself: Does some energy setting is causing the monitor to come back by itself?

      Good luck,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: MMM-ioBroker - it will not show

      @sdetweil :-) For me this is pretty clear and obvious - in addition I do NOT perform every update/upgrade (“never touch a running system”) because I’m checking upfront if a new release brings in anything I potentially need.

      But the thread opener is at least irritated and asks for commandlines to copy.

      I assume the thread opener is aware that everything herein is “enter at your own risk”.

      That you - as the script creator and owner - are even more cautious is appropriate and highly welcome and appreciated!

      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Bugsounet and MMM-Pir

      @gullymat said in Bugsounet and MMM-Pir:

      needs like 10 sec to activate the screen form the pir, often startup failures

      I guess this is because of the fact that bugsounet has much more functionalty built in (screen dimming, count down display) - which exactly is the reason why i love it that much :-)

      Ralf

      posted in General Discussion
      R
      rkorell
    • RE: MMM-ioBroker - it will not show

      @sdetweil said in MMM-ioBroker - it will not show:

      i dont supply a copy/paste for that because i dont want people using it if its not needed,

      valid point, but @kusselin seems to struggle :-)

      Regards,
      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: MMM-ioBroker - it will not show

      @kusselin said

      Can you please tell me the Linux commands I need to use to get it working again.

      Hi @kusselin , Sam is talking about parameters you can - and should - overhand to his update-script.

      If you call the script - as is - without parameter the script only do a “test-run” and did not change anything.

      The “normal” parameter to DO the upgrade is “apyly” for this the unix command is:

      bash -c  "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/upgrade-script.sh)" -apply
      

      Sam is assuming that you already HAVE done some upgrades - for this reason he states “and you loaded the new code” . IF you had already loaded some new versions the above command will “fail” also because you already HAVE the new version.
      So for this case you have to use the “force” parameter.
      The unix command for this is:

      bash -c  "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/upgrade-script.sh)" -force 
      

      Good luck!

      Ralf

      posted in Troubleshooting
      R
      rkorell
    • RE: Fan for Pi5???

      @BKeyport OK, thanks for your viewpoint!
      Than I‘m on the right way - still works today :-)
      Temperature was 45°C today in the morning - was at 56° everytime before …
      So even passive cooling seems to be much better.

      Nice rest of weekeend to all of you.
      Ralf

      posted in Hardware
      R
      rkorell
    • RE: Fan for Pi5???

      @sdetweil :-) indeed ….
      (Fits millimeter-exactly behind the mirror no more space left…)

      But seems to work.

      posted in Hardware
      R
      rkorell
    • RE: Fan for Pi5???

      @sdetweil , @BKeyport :
      In the meantime a GeeekPi Ultra Thin ICE Tower Cooler is arrived and just installed.
      Fan is bigger than Pi - looks weird.

      20250405_192801_Original.jpeg

      After 20 minutes temperature is at 52°C nothing to hear.
      Keep you posted…

      Thanks for your feedback so far!

      Ralf

      posted in Hardware
      R
      rkorell
    • RE: Fan for Pi5???

      @sdetweil Lucky guy!

      Thanks for feedback!

      Ralf

      posted in Hardware
      R
      rkorell
    • 1
    • 2
    • 7
    • 8
    • 9
    • 10
    • 11
    • 20
    • 21
    • 9 / 21