diff --git a/ampel-firmware/ampel-firmware.ino b/ampel-firmware/ampel-firmware.ino
index 09bd1052ce33cf323f5a1fca24c2ae23a45c8d25..6ad91545f9fcb52695c396c73a50b5a779db4ef6 100644
--- a/ampel-firmware/ampel-firmware.ino
+++ b/ampel-firmware/ampel-firmware.ino
@@ -91,6 +91,8 @@ void setup() {
 
   csv_writer::initialize(config::ampel_name());
 
+  ntp::initialize();
+
   if (config::is_wifi_on) {
     wifi::defineCommands();
     web_server::definePages();
@@ -166,7 +168,7 @@ void wifiConnected() {
   snprintf(wifi::local_ip, sizeof(wifi::local_ip), "%d.%d.%d.%d", address[0], address[1], address[2], address[3]);
   Serial.println(wifi::local_ip);
 
-  ntp::initialize();
+  ntp::connect();
 
   if (config::is_mqtt_active()) {
     mqtt::initialize(ampel.sensorId);
diff --git a/ampel-firmware/ntp.cpp b/ampel-firmware/ntp.cpp
index 03915a6b4987d8709edb5edc78b2b12d9157e88c..2806c9b88a4f358433685228f9c9050fc951cea3 100644
--- a/ampel-firmware/ntp.cpp
+++ b/ampel-firmware/ntp.cpp
@@ -12,14 +12,18 @@ namespace ntp {
   bool connected_at_least_once = false;
   void setLocalTime(int32_t unix_seconds);
 
+  // Should be defined, even offline
   void initialize() {
-    timeClient.setPoolServerName(config::ntp_server);
     timeClient.setTimeOffset((config::time_zone + config::daylight_saving_time) * 3600);
+    sensor_console::defineIntCommand("set_time", ntp::setLocalTime, F("1618829570 (Sets time to the given UNIX time)"));
+  }
+
+  void connect(){
+    timeClient.setPoolServerName(config::ntp_server);
     timeClient.setUpdateInterval(60000UL);
     Serial.print("NTP - Trying to connect to : ");
     Serial.println(config::ntp_server);
     timeClient.begin();
-    sensor_console::defineIntCommand("set_time", ntp::setLocalTime, F("1618829570 (Sets time to the given UNIX time)")); //TODO: Define even without internet
   }
 
   void update() {
diff --git a/ampel-firmware/ntp.h b/ampel-firmware/ntp.h
index fe1647c7da1f4ca302c6dba3c6bba33e5595d873..827c2aab376a45912215ba2eaf3f69f88d3ea372 100644
--- a/ampel-firmware/ntp.h
+++ b/ampel-firmware/ntp.h
@@ -3,6 +3,7 @@
 
 namespace ntp {
   void initialize();
+  void connect();
   void update();
   void getLocalTime(char *timestamp);
 }
diff --git a/ampel-firmware/web_server.cpp b/ampel-firmware/web_server.cpp
index c25f758c7ed30e43f98f1199a20969625f9ad0e9..e9918eb9aa5e78675fab81e268f532de843461c2 100644
--- a/ampel-firmware/web_server.cpp
+++ b/ampel-firmware/web_server.cpp
@@ -118,6 +118,7 @@ namespace web_server {
             "<form action='/delete_csv' method='POST' onsubmit=\"return confirm('Are you really sure you want to delete all data?') && (document.body.style.cursor = 'wait');\">"
             "<input type='submit' value='Delete CSV'/>"
             "</form>"
+            "<button onclick=\"fetch('/command?send=set_time '+Math.floor(Date.now()/1000))\" %s>Set time!</button>" // Can be useful in AP mode
             "</div>"
             "<a href='https://transfer.hft-stuttgart.de/gitlab/co2ampel/ampel-firmware' target='_blank'>Source code</a>&nbsp;"
             "<a href='https://transfer.hft-stuttgart.de/gitlab/co2ampel/ampel-documentation' target='_blank'>Documentation</a>");
@@ -230,7 +231,7 @@ namespace web_server {
         config::temperature_offset, config::auto_calibrate_sensor ? "Yes" : "No", config::ampel_name(),
         config::ampel_name(), wifi::local_ip, wifi::local_ip, ampel.macAddress, ESP.getFreeHeap(),
         esp_get_max_free_block_size(), esp_get_heap_fragmentation(), ampel.max_loop_duration, ampel.board,
-        ampel.sensorId, ampel.version, dd, hh, mm, ss);
+        ampel.sensorId, ampel.version, dd, hh, mm, ss, wifi::isAccessPoint() ? "" : "hidden");
 
     Serial.print(F(" - Body2 size : "));
     Serial.print(strlen(content));