@sdetweil topic solved. I’ve downloaded older version from the first guy, not the forked one. Now everythings works perfect from shbatm.
Read the statement by Michael Teeuw here.
-
RE: MMM- Carousel
-
RE: MMM-PublicTransportHafas
@KristjanESPERANTO thanks a lot .
Sorry I mean umlauts don’t work on both node run query (hafas and hub) but on the HAFAS module it had simply required less …less precise data and forgave the absence of umlauts. Output (results) were clearlier. On HAFAS I found my station (18 März Straße) by myself on December 2025, and on new hub module I needed your help .
edit.
thanks for update - new module is now absolute.
After one hour battle with gemini help I captured the umlauts.
Set system-wide locale explicitly:Edit /etc/default/locale:
Bashsudo nano /etc/default/localeReplace its content with:
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8Force locale variables in user profile:
Bashecho 'export LANG=en_US.UTF-8' >> ~/.profile echo 'export LC_ALL=en_US.UTF-8' >> ~/.profileReboot the Raspberry Pi:
Bashsudo rebootAfter the reboot, npm run query and Node CLI environments properly retain all Unicode characters .
-
RE: MMM- Carousel
@sdetweil
Ok sorry , in hurry.
Why? Because mnm-pages does not support keyBinding module. I want to move pages manually before I order IR touch frame. -
RE: MMM- Carousel
@KristjanESPERANTO I know topic is old…well instead of searching inside the app, I have been digging in Google browser . " Magic mirror modules"
-
RE: MMM-PublicTransportHafas
@KristjanESPERANTO That’s really nice of you, thanks!
Especially for lazy people like me haha.
Is programming your hobby or you are a professional developer?
Off top:
I am also trying stm32 with spi LCD and I2c air sensor in C++Mit prototype is already done. Nice to hear from U private if possible. As you can see from my code I am moving in nearly future from Thüringen to a North Bavaria (Ansbach). -
RE: MMM-PublicTransportHafas
@KristjanESPERANTO thanks a lot .
Sorry I mean umlauts don’t work on both node run query (hafas and hub) but on the HAFAS module it had simply required less …less precise data and forgave the absence of umlauts. Output (results) were clearlier. On HAFAS I found my station (18 März Straße) by myself on December 2025, and on new hub module I needed your help .
edit.
thanks for update - new module is now absolute.
After one hour battle with gemini help I captured the umlauts.
Set system-wide locale explicitly:Edit /etc/default/locale:
Bashsudo nano /etc/default/localeReplace its content with:
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8Force locale variables in user profile:
Bashecho 'export LANG=en_US.UTF-8' >> ~/.profile echo 'export LC_ALL=en_US.UTF-8' >> ~/.profileReboot the Raspberry Pi:
Bashsudo rebootAfter the reboot, npm run query and Node CLI environments properly retain all Unicode characters .
-
RE: MMM-PublicTransportHafas
@KristjanESPERANTO haha Kristjan, there in hafas was displayed important delay for each position if occured. To be honest sweet train and clock icons on the layout schedule were very nice for eyes. Im pretty sure station ID had been easier to find on HAFAS module too (more friendly IDs with less display problems)
-
RE: MMM-PublicTransportHafas
@KristjanESPERANTO I can use German signs everywhere on terminal but not in node.js.
After I type node – run query i am no longer permitted to use äüß umlauts.
Second problem : HAFAS is over. All the time I have socket issue.
As you seen in my project i am using carouselId variable because on every slide I have different station. On HAFAS this was possible but on your new module Hub this is impossible(or maybe i don’t know the new way) . New modules understand only module name instead of carouselId. Please take a deeper look on my slide config.let config = { address: "localhost", // Lub "127.0.0.1" port: 8080, basePath: "/", ipWhitelist: ["127.0.0.1", "::1"], // Zezwala na dostęp tylko z tego samego urządzenia useHttps: false, httpsPrivateKey: "", httpsCertificate: "", language: "pl", locale: "pl", logLevel: ["INFO", "LOG", "WARN", "ERROR"], timeFormat: 24, units: "metric", modules: [ { module: "MMM-KeyBindings", config: { evdev: { enabled: false }, enableKeyboard: true, } }, { module: "MMM-Carousel", position: "bottom_bar", config: { transitionInterval: 20000, ignoreModules: ["clock", "alert","Station_Gotha_18_März"], mode: "slides", showPageIndicators: true, showPageControls: true, slides: { main: ["weather"], "Slide 2": ["MMM-OpenWeatherForecast", "newsfeed"], "Slide 3": ["calendar", "compliments","MMM-PublicTransportHub"], "Slide 4": ["MMM-PublicTransportHub"], "Slide 5": ["MMM-EasyPix"] }, keyBindings: { enabled: true, map: { NextSlide: "ArrowRight", PrevSlide: "ArrowLeft", Pause: "ArrowDown", Slide0: "Home" }, mode: "DEFAULT" } } }, { module: "MMM-EasyPix", position: "top_right", config: { picName: "Alona.jpg", // Enter the picture file name. You can even use a direct internet URL to an image. maxWidth: "70%" // Size picture precisely. Retains aspect ratio. } }, { module: "alert" }, { module: "updatenotification", header: "US Holidays", position: "top_bar", }, { module: "calendar", header: "Holidays in Thüringen", position: "top_left", config: { calendars: [ { fetchInterval: 7 * 24 * 60 * 60 * 1000, symbol: "calendar-check", url: "https://www.officeholidays.com/ics-all/germany/thuringia" } ] } }, { module: "compliments", position: "lower_third", }, { module: "weather", position: "top_right", classes : "weather-forecast", header: "Weather Forecast", config: { weatherProvider: "openmeteo", type: "forecast", lat: 50.9494849, lon: 10.7014435 } }, { module: "weather", position: "top_right", classes : "weather-current", header: "Weather Current", config: { weatherProvider: "openmeteo", type: "current", lat: 50.9494849, lon: 10.7014435 } }, { module: "MMM-OpenWeatherForecast", position: "top_right", header: "Forecast", config: { apikey: "23cf27375cfb96bd9c4bcfe389c729c6", //only string here latitude: 50.9494849, //number works here longitude: "10.7014435", //so does a string units: "metric", // dopasowane do reszty updateInterval: 600000, // co 10 min animationSpeed: 1000, lang: "pl", label_hourlyTimeFormat: "H:mm", label_sunriseTimeFormat: "H:mm", label_days: ["Ndz", "Pon", "Wt", " Śr", "Czw", "Pt", "Sob"], showCurrentConditions: true, showHourlyForecast: true, showDailyForecast: true, hourlyForecastInterval: 3, dailyForecastDays: 7 } }, { module: "newsfeed", position: "bottom_bar", config: { feeds: [ { title: "New York Times", url: "https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml" } ], showSourceTitle: true, showPublishDate: true, broadcastNewsFeeds: true, broadcastNewsUpdates: true } }, { module: 'clock', position: 'bottom_bar' }, { module: "MMM-PublicTransportHafas", position: "bottom_left", config: { carouselId: "My_Station", hafasProfile: "vmt", stationID: "167050", timeInFuture: 720, stationName: "Gotha, Hauptbahnhof", direction: "", excludedTransportationTypes: [], ignoredLines: [], timeToStation: 10, displayLastUpdate: true, maxUnreachableDepartures: 0, maxReachableDepartures: 7, showColoredLineSymbols: true, customLineStyles: "", showOnlyLineNumbers: false, showTableHeadersAsSymbols: true, useColorForRealtimeInfo: true } }, { module: "MMM-PublicTransportHub", position: "bottom_left", header: "Gotha, 18.-März-Straße", config: { carouselId: "Station_Gotha_18_März", provider: "transitous", hafasProfile: "vmt", stationId: "de-DELFI_de:16067:167050::16705000", timeInFutureMinutes: 720, updatesEvery: 60, maxDepartures: 12, timeToStation: 4, maxUnreachableDepartures: 2, excludeCanceled: false, lineFilter: [], directionFilter: [], productFilter: ["tram", "bus"], showDelay: false, showRealtimeIndicator: true, showRemarks: true, columnOrder: ["time", "line", "direction", "platform"], lineStylePreset: "none", replaceInLineNames: { "Bus ": "" }, requestTimeoutMs: 12000, fetchRetries: 1, contact: "mateusz.kujawa93@gmail.com" } }, { module: "MMM-PublicTransportHub", position: "bottom_right", header: "Ansbach", config: { carouselId: "Station_Ansbach", provider: "transitous", stationId: "de-DELFI_de:09561:11000:53:4", updatesEvery: 60, maxDepartures: 12, timeToStation: 4, maxUnreachableDepartures: 2, excludeCanceled: false, lineFilter: [], directionFilter: [], productFilter: ["tram", "bus"], showDelay: false, showRealtimeIndicator: true, showRemarks: true, columnOrder: ["time", "line", "direction", "platform"], lineStylePreset: "none", replaceInLineNames: { "Bus ": "" }, requestTimeoutMs: 12000, fetchRetries: 1, contact: "mateusz.kujawa93@gmail.com" } }, { module: "MMM-PublicTransportHub", position: "bottom_right", header: "Gotha, Hauptbahnhof", config: { carouselId: "Station_Gotha", provider: "transitous", hafasProfile: "vmt", stationId: "de-DELFI_de:16067:8010136", timeInFutureMinutes: 720, updatesEvery: 60, maxDepartures: 12, timeToStation: 4, maxUnreachableDepartures: 2, excludeCanceled: false, lineFilter: [], directionFilter: [], productFilter: ["tram", "bus"], showDelay: false, showRealtimeIndicator: true, showRemarks: true, columnOrder: ["time", "line", "direction", "platform"], lineStylePreset: "none", replaceInLineNames: { "Bus ": "" }, requestTimeoutMs: 12000, fetchRetries: 1, contact: "mateusz.kujawa93@gmail.com" } }, ] }; /***** DO NOT EDIT THE LINE BELOW *****/ if (typeof module !== "undefined") { module.exports = config; }For Slide 3 and 4 I have no solution. Your module Hub understand carouselId only when i put it in ignoreModules list!

EDIT! I’ve found a solution : O to the carouselId!
{ module: "MMM-Carousel", position: "bottom_bar", config: { transitionInterval: 20000, ignoreModules: ["clock", "alert","Station_Gotha_18_März"], mode: "slides", showPageIndicators: true, showPageControls: true, slides: { main: ["weather"], "Slide 2": ["MMM-OpenWeatherForecast", "newsfeed"], "Slide 3": ["calendar", "compliments",{name: "MMM-PublicTransportHub", carouselId: "Station_Ansbach" }], "Slide 4": [{ name: "MMM-PublicTransportHub", carouselId: "Station_Gotha" }], "Slide 5": ["MMM-EasyPix"] }, keyBindings: { enabled: true, map: { NextSlide: "ArrowRight", PrevSlide: "ArrowLeft", Pause: "ArrowDown", Slide0: "Home" }, mode: "DEFAULT" } } },dictionaries were the key. Sorry for my bad level of programming.
Still bad that hafas module is over. I liked design of hafas module much more.
Now everyhing is working on HUB module just like before it has been running on HAFASmodule (clock and main station is permanent on the screen on every slide and other modules and stations shows only with dedicated ones slides.) I like this combination. Still have not found a solution to UTF encoding in node.js query searching tool. -
RE: MMM-PublicTransportHafas
So ID searching tool from node query still won’t work with 18 März Straße but i found stationId via gemini :) (i dont’ like it). In my code i am using two TransportHub modules (TransportHafas is in code but i am not using in my carousel because is not working) . 18 Marz Strasse station does not return an error but says that there is no departures. Ansbach station works perfecly.
let config = { address: "localhost", // Lub "127.0.0.1" port: 8080, basePath: "/", ipWhitelist: ["127.0.0.1", "::1"], // Zezwala na dostęp tylko z tego samego urządzenia useHttps: false, httpsPrivateKey: "", httpsCertificate: "", language: "pl", locale: "pl", logLevel: ["INFO", "LOG", "WARN", "ERROR"], timeFormat: 24, units: "metric", modules: [ { module: "MMM-KeyBindings", config: { evdev: { enabled: false }, enableKeyboard: true, } }, { module: "MMM-Carousel", position: "bottom_bar", config: { transitionInterval: 20000, ignoreModules: ["clock", "alert","Station_Gotha"], mode: "slides", showPageIndicators: true, showPageControls: true, slides: { main: ["weather"], "Slide 2": ["MMM-OpenWeatherForecast", "newsfeed"], "Slide 3": ["calendar", "compliments"], "Slide 4": ["MMM-PublicTransportHub"], "Slide 5": ["MMM-EasyPix"] }, keyBindings: { enabled: true, map: { NextSlide: "ArrowRight", PrevSlide: "ArrowLeft", Pause: "ArrowDown", Slide0: "Home" }, mode: "DEFAULT" } } }, { module: "MMM-EasyPix", position: "top_right", config: { picName: "Alona.jpg", // Enter the picture file name. You can even use a direct internet URL to an image. maxWidth: "70%" // Size picture precisely. Retains aspect ratio. } }, { module: "alert" }, { module: "updatenotification", header: "US Holidays", position: "top_bar", }, { module: "calendar", header: "Holidays in Thüringen", position: "top_left", config: { calendars: [ { fetchInterval: 7 * 24 * 60 * 60 * 1000, symbol: "calendar-check", url: "https://www.officeholidays.com/ics-all/germany/thuringia" } ] } }, { module: "compliments", position: "lower_third", }, { module: "weather", position: "top_right", classes : "weather-forecast", header: "Weather Forecast", config: { weatherProvider: "openmeteo", type: "forecast", lat: 50.9494849, lon: 10.7014435 } }, { module: "weather", position: "top_right", classes : "weather-current", header: "Weather Current", config: { weatherProvider: "openmeteo", type: "current", lat: 50.9494849, lon: 10.7014435 } }, { module: "MMM-OpenWeatherForecast", position: "top_right", header: "Forecast", config: { apikey: "23cf27375cfb96bd9c4bcfe389c729c6", //only string here latitude: 50.9494849, //number works here longitude: "10.7014435", //so does a string units: "metric", // dopasowane do reszty updateInterval: 600000, // co 10 min animationSpeed: 1000, lang: "pl", label_hourlyTimeFormat: "H:mm", label_sunriseTimeFormat: "H:mm", label_days: ["Ndz", "Pon", "Wt", " Śr", "Czw", "Pt", "Sob"], showCurrentConditions: true, showHourlyForecast: true, showDailyForecast: true, hourlyForecastInterval: 3, dailyForecastDays: 7 } }, { module: "newsfeed", position: "bottom_bar", config: { feeds: [ { title: "New York Times", url: "https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml" } ], showSourceTitle: true, showPublishDate: true, broadcastNewsFeeds: true, broadcastNewsUpdates: true } }, { module: 'clock', position: 'bottom_bar' }, { module: "MMM-PublicTransportHafas", position: "bottom_left", config: { hafasProfile: "vmt", carouselId: "My_Station", stationID: "167050", stationName: "Gotha, 18.-März-Straße", direction: "", excludedTransportationTypes: [], ignoredLines: [], timeToStation: 10, displayLastUpdate: true, maxUnreachableDepartures: 0, maxReachableDepartures: 7, showColoredLineSymbols: true, customLineStyles: "", showOnlyLineNumbers: false, showTableHeadersAsSymbols: true, useColorForRealtimeInfo: true } }, { module: "MMM-PublicTransportHub", position: "top_left", header: "Gotha, 18.-März-Straße", config: { carouselId: "Station_Gotha", provider: "vmt", stationId: "de-DELFI_de:16067:167050", updatesEvery: 60, maxDepartures: 12, timeToStation: 4, maxUnreachableDepartures: 2, excludeCanceled: false, lineFilter: [], directionFilter: [], productFilter: ["tram", "bus"], showDelay: false, showRealtimeIndicator: true, showRemarks: true, columnOrder: ["time", "line", "direction", "platform"], lineStylePreset: "none", replaceInLineNames: { "Bus ": "" }, requestTimeoutMs: 12000, fetchRetries: 1, contact: "mateusz.kujawa93@gmail.com" } }, { module: "MMM-PublicTransportHub", position: "bottom_right", header: "Ansbach", config: { carouselId: "Station_Ansbach", provider: "transitous", stationId: "de-DELFI_de:09561:11000:53:4", updatesEvery: 60, maxDepartures: 12, timeToStation: 4, maxUnreachableDepartures: 2, excludeCanceled: false, lineFilter: [], directionFilter: [], productFilter: ["tram", "bus"], showDelay: false, showRealtimeIndicator: true, showRemarks: true, columnOrder: ["time", "line", "direction", "platform"], lineStylePreset: "none", replaceInLineNames: { "Bus ": "" }, requestTimeoutMs: 12000, fetchRetries: 1, contact: "mateusz.kujawa93@gmail.com" } }, ] }; /***** DO NOT EDIT THE LINE BELOW *****/ if (typeof module !== "undefined") { module.exports = config; } please help me to figure it out together. -
RE: MMM-PublicTransportHafas
@KristjanESPERANTO well, on the HAFAS (older module) I see only 22 position when I am searching using node. Why? How to change pagination.
Your new Module HUB is working for Gotha Hauptbahnhof… perfectly. I want to use both modules if possible.
And still on theolder module HAFAS is update socket issue 1
On the searching mode inside node query can not use German letters. How to configure node CLI?
On your module Hub node console looks exactly:

-
RE: MMM-PublicTransportHafas
Error code ops_blocked when searching in MMM-PublicTransportHub module using node --run query
-
RE: MMM-PublicTransportHafas
@KristjanESPERANTO Have you found in node seeker?
Ohhh now Hafas module again : D
But your module is working for Gotha Hauptbahnhof. Can we speak German or we require English only on this forum? -
RE: magicmirror not working anymore
@1a2a3a Have You updated and upgraded everything OS and Magic Mirror plus modules??
-
RE: MMM-PublicTransportHafas
@KristjanESPERANTO
Your module does not support German keyboard special signs. How can I find 18 März Straße and besides is not working for Gotha Hbf.
What’s going on with world transport APIs lol
Module is working on main station but it’s very hard to find stationId from the German streets like 18 März Straße Gotha. Any ideas? Node query is limited to bigger stations.