diff --git a/agent_based/juniper_led.py b/agent_based/juniper_led.py
new file mode 100644
index 0000000000000000000000000000000000000000..17ac79ba8d26f605c57299b4a1f7d07718edf0a9
--- /dev/null
+++ b/agent_based/juniper_led.py
@@ -0,0 +1,109 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2016-08-01
+#
+# monitor Juniper Networks led state
+#
+# sample snmpwalk
+# .1.3.6.1.4.1.2636.3.1.10.1.7.3.1.1.0.0 = STRING: " chassis alarm LED"
+# .1.3.6.1.4.1.2636.3.1.10.1.7.3.2.1.1.0 = STRING: " Power Supply 0 LED"
+# .1.3.6.1.4.1.2636.3.1.10.1.7.3.2.1.2.0 = STRING: " Power Supply 1 LED"
+# .1.3.6.1.4.1.2636.3.1.10.1.9.3.1.1.0.0 = INTEGER: 6
+# .1.3.6.1.4.1.2636.3.1.10.1.9.3.2.1.1.0 = INTEGER: 2
+# .1.3.6.1.4.1.2636.3.1.10.1.9.3.2.1.2.0 = INTEGER: 2
+#
+# sample string_table
+# [[' chassis alarm LED', '6'], [' Power Supply 0 LED', '2'], [' Power Supply 1 LED', '2']]
+#
+# sample section
+# {'Chassis alarm': '6', 'Power Supply 0': '2', 'Power Supply 1': '2'}
+#
+# ToDo: create WATO for monitoring levels for each LED state
+#
+from typing import Optional, Dict
+
+from cmk.base.plugins.agent_based.agent_based_api.v1 import (
+    register,
+    Service,
+    Result,
+    State,
+    SNMPTree,
+    startswith,
+)
+from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
+    DiscoveryResult,
+    CheckResult,
+    StringTable,
+)
+
+_juniper_led_alarm_ordered = {
+    '1': (0, 'OK, online as an active primary (blue)'),  # blue
+    '2': (0, 'OK, good, normally working (green)'),  # green
+    '3': (1, 'alarm, offline, not running (minor) (amber)'),  # amber
+    '4': (1, 'alarm, warning, marginally working (minor) (yellow)'),  # yellow
+    '5': (2, 'alert, failed, not working (major) (red)'),  # red
+    '6': (3, 'unknown or unavailable'),  # other
+    '7': (3, 'off'),
+    '8': (3, 'blinking blue'),
+    '9': (3, 'blinking green'),
+    '10': (3, 'blinking amber'),
+    '11': (3, 'blinking yellow'),
+    '12': (3, 'blinking red'),
+}
+
+
+def parse_juniper_led(string_table: StringTable) -> Optional[Dict[str, str]]:
+    juniper_leds = {}
+
+    for led_description, led_state in string_table:
+        # remove "LED" from description
+        led_description = led_description.replace('LED', '').strip(' ')
+        # changing the first letter into upper case
+        led_description = led_description[0].upper() + led_description[1:]
+
+        juniper_leds[led_description] = led_state
+
+    return juniper_leds
+
+
+def discovery_juniper_led(section: Dict[str, str]) -> DiscoveryResult:
+    for led in section.keys():
+        yield Service(item=led)
+
+
+def check_juniper_led(item, params, section: Dict[str, str]) -> CheckResult:
+    led_state = section.get(item)
+    if led_state:
+        state, state_readable = _juniper_led_alarm_ordered.get(led_state, (3, f'unhandled alarm type {led_state}'))
+        yield Result(state=State(state), summary=state_readable)
+
+
+register.snmp_section(
+    name='juniper_led',
+    parse_function=parse_juniper_led,
+    supersedes=['juniper_alarm'],
+    fetch=
+    SNMPTree(
+        base='.1.3.6.1.4.1.2636.3.1.10.1',  # JUNIPER-MIB::jnxLEDEntry
+        oids=[
+            '7',  # jnxLEDDescr
+            '9',  # jnxLEDStateOrdered
+        ]
+    ),
+    detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.2636.1.1.1'),
+)
+
+register.check_plugin(
+    name='juniper_led',
+    service_name='Alarm LED %s',
+    discovery_function=discovery_juniper_led,
+    check_function=check_juniper_led,
+    check_ruleset_name='juniper_led',
+    check_default_parameters={
+    }
+)
diff --git a/juniper_led.mkp b/juniper_led.mkp
new file mode 100644
index 0000000000000000000000000000000000000000..12e7c7e84922cfaf8f57b3c1dcdef8d98efee3e8
Binary files /dev/null and b/juniper_led.mkp differ
diff --git a/packages/juniper_led b/packages/juniper_led
new file mode 100644
index 0000000000000000000000000000000000000000..5ec46b3d88ba4e7c1b205e75ea6fe0a687eeb5ec
--- /dev/null
+++ b/packages/juniper_led
@@ -0,0 +1,19 @@
+{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)',
+ 'description': 'Monitor Juniper Networks Alarm LED state. This is a '
+                'rewrite/extension for the  "juniper_alarm" check plugin.\n'
+                '\n'
+                'Extends the check for all LEDs available in the MIB and also '
+                'for the "blinking" state of the LEDs.\n'
+                '\n'
+                'Note: the OIDs used in this check are deprecated by Juniper.\n'
+                '\n'
+                'ToDo: WATO to match monitoring states to LED states\n',
+ 'download_url': 'https://thl-cmk.hopto.org',
+ 'files': {'agent_based': ['juniper_led.py']},
+ 'name': 'juniper_led',
+ 'num_files': 1,
+ 'title': 'Juniper Alarm LEDs',
+ 'version': '20220607v.0.0.1',
+ 'version.min_required': '2.0.0',
+ 'version.packaged': '2021.09.20',
+ 'version.usable_until': None}
\ No newline at end of file